SOLVED

macro VBA excel nommer une cellule

Iron Contributor

Dans une macro, je veux donner un nom à une cellule donnée, à savoir celle où je suis au lancement de la macro.

si je laisse "range", avec des références absolues, la macro fonctionne, mais une seule fois. Le nom choisi disparait de la liste de la feuille, mais est toujours présent dans les noms de "formule-gestionnaire de noms".

voici ce que j'ai écrit, qui ne fonctionne pas:

ActiveWorkbook.Names.Add Name:="horo4", RefersToR1C1:=ActiveCell.Address

Merci de m'aider!

199 Replies

@bernard_daniel_1950 

Dormez bien.

how can i restore data on my excel worksheet that i mistakenly erased ?

@bobmdirkaolcom 

This is not related to the subject of this discussion. Please start a new discussion and ask your question there.

Désolé, je me suis mal exprimé...
dans ma formule:
-----------------
Do While ActiveCell.Value <> "ftransfert"
-------------------
ftransfert est le nom que j'ai donné à une cellule, laquelle contient une valeur numérique variable, en l'occurrence le mois en cours (10). Et c'est cette valeur que je veux comparer!

@bernard_daniel_1950 

Essayez

 

Do While ActiveCell.Value <> Range("ftransfert").Value

Merci, c'est bon!
Apparemment, vous ne dormez jamais? ;)
Sinon, j'ai deux questions quasi existentielles:
- lorsque je déroule une macro en pas à pas [F8], je ne vois pas l'effet sur la feuille elle même, contrairement à XL4.
- J'aimerais conserver les macros que j'ai écrites dans un seul fichier, où j'irais piocher des formules en cas de besoin.
Pour l'instant, je les recopie sur une feuille Word, mais ça me paraît primaire!
Bonne journée!

@bernard_daniel_1950 

Vous devriez voir l'effet d'une macro lorsque vous appuyez sur F8.

 

Vous pouvez créer macros dans le classeur de macros personnelles PERSONAL.XLSB. Voir Créer et enregistrer toutes vos macros dans un classeur unique (translation automatique...)

Encore deux questions...
-J'appuie sur F8 et, effectivement, la macro se déroule ligne par ligne... mais je ne vois pas l'effet, étape par étape, sur la feuille de calcul elle-même!
- J'ai créé mon personal.XLSB, je voudrais maintenant y faire rentrer mes macros déjà créées. Comment faire?
Je n'ose plus dire merci, cela devient répétitif!

@bernard_daniel_1950 

 

> J'appuie sur F8 et, effectivement, la macro se déroule ligne par ligne... mais je ne vois pas l'effet, étape par étape, sur la feuille de calcul elle-même!

 

C'est curieux - je ne comprends pas ça...

 

> J'ai créé mon personal.XLSB, je voudrais maintenant y faire rentrer mes macros déjà créées. Comment faire?

 

Vous pouvez faire glisser des modules de code d'un classeur ordinaire vers PERSONAL.XLSB dans le Visual Basic Editor pour effectuer une copie.

Bonjour,
j'ai créé mon personal.xlsb. Est-il possible de changer le nom des modules pour le rendre plus explicite?
par ailleurs, pour l'autre problème, la macro affiche la feuille de calcul uniquement en cas de MsgBox...
et, enfin, je bute sur quelque chose:
---------------
Dim j As String
j = InputBox("Indiquez le jour d'insertion.", " Jour d'insertion")

Range("A14").Select
Do While ActiveCell.Value > j
ActiveCell.Offset(1, 0).Activate
Loop
-------------------
Je reste sur A14! Je dois rater quelque chose...
Dank u!

@bernard_daniel_1950 

Oui, vous pouvez changer le nom des modules:

 

S1927.png

 

Qu'est-ce que vous tapez dans le MsgBox?

-Merci, je n'avais pas cette fenêtre!
-Un jour quelconque, sous forme numérique. Par exemple: 21 pour le 21ème jour du mois.
Cela me servira pour entrer une ligne ou plusieurs dans un tableau, à une date postérieure.

@bernard_daniel_1950 

Dans le Visual Basic Editor, tapez F4 pour activer cette fenêtre.

 

Serait-il possible de joindre un classeur (sans information personnalisée ou sensitive)? Ou de télécharger le classeur vers Google Drive ou OneDrive, et afficher un lien ici?

@Hans Vogelaar 

Mon tableau est -relativement- complexe... dans sa partie cachée!

 

 

JourNOM- PrénomCarte perdueStatut particulierInscription  payanteInscription  gratuiteInscription  vacanciersRéinscription payanteRéinscrip-tion gratuiteimpr. NB A4impr. NB A3impr. Couleur A4impr. Couleur A3Montant dûMode de paiementEspècesChèqueCBGratuitQUI?
1DRONET Stéphanie  1        20,00 €Chèque 20,00 €  Erwan
1ROTTIER Nicolas   2       0,00 €Gratuit   0,00 €Erwan
1DRONET Stéphanie       4 3 2,60 €Espèces2,60 €   Erwan
1YENTUR Mesut   1       0,00 €Gratuit   0,00 €Erwan
1LELIEVRE Adeline     1     20,00 €Espèces20,00 €   Erwan
1SILVANO Eliane     1     20,00 €Espèces20,00 €   Erwan
1PIAU Anne     1     20,00 €Chèque 20,00 €  Erwan

ci dessous le début de macro:

---------------------

Sub inserer_ligne_vb()
'
' inserer_ligne_vb Macro
' insère une ou plusieurs lignes dans le tableau
'

'
Dim s As String
s = InputBox("Indiquez le nombre de lignes à insérer: de 1 à 3.", " Insertion")
If s >= 3 Then
MsgBox "Nombre de lignes trop important (3 max)!"
Exit Sub
End If
Dim j As String
j = InputBox("Indiquez le jour d'insertion.", " Jour d'insertion")

Range("A14").Select
Do While ActiveCell.Value > j
ActiveCell.Offset(1, 0).Activate
Loop

End Sub

----------------------

Je souhaite rajouter des lignes, sans insérer, car les 800 colonnes de traitement ne suivraient pas!

donc, copier le tableau dans sa partie "public", le décaler d'une ou plusieurs lignes afin d'entrer de nouvelles saisies.

Je ne sais pas si je suis bien clair!

@bernard_daniel_1950 

Dans votre example, il n'y a qu'un seul valeur 1 dans colonne A...

Désolé, ce n'st qu'un extrait!
Le tableau a 300 lignes... Actuellement, nous avons des entrées jusqu'au 21.
Par exemple, pour le 21octobre, nous aurons un certain nombre d'entrées pour ce jour.
Et donc, mon souci est d'intégrer une entrée tardive, par exemple au 15, pour respecter impérativement la chronologie.

@bernard_daniel_1950 

Essayez

 

Do While ActiveCell.Value < j

Je m'en veux terriblement! surtout de vous avoir dérangé pour cette erreur grossière!
J'ai chanté victoire trop vite...
---------------
Sub inserer_ligne_vb()
'
' inserer_ligne_vb Macro
' insère une ou plusieurs lignes dans le tableau
'

'
Dim s As String
s = InputBox("Indiquez le nombre de lignes à insérer: de 1 à 3.", " Insertion")
If s > 3 Then
MsgBox "Nombre de lignes trop important (3 max)!"
Exit Sub
End If
Dim j As String
j = InputBox("Indiquez le jour d'insertion.", " Jour d'insertion")

Range("A14").Select
Do While ActiveCell.Value < j
ActiveCell.Offset(1, 0).Activate
Loop
End Sub
------------------
J'attribue à s la valeur 1, puis à j : 20.
Mais la macro s'arrête au 4 (qui est la valeur immédiatement supérieure à s, donc à 1, dans mon tableau).
On dirait que j n'a pas été pris en compte?

@bernard_daniel_1950

s et j devraient être nombres, pas texte. Changez

Dim s As String

et

Dim j As String

à

Dim s As Long

et

Dim j As Long