SOLVED

macro VBA excel nommer une cellule

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!

51 Replies

@bernard_daniel_1950 

Essayez

 

ActiveWorkbook.Names.Add Name:="horo4", RefersTo:=ActiveCell

 

ou, plus compliqué:

 

ActiveWorkbook.Names.Add Name:="horo4", RefersToR1C1:="=" & Activecell.Address(ReferenceStyle:=xlR1C1, External:=True)

Merci beaucoup! la première formule marche très bien!
Bonjour,
Je ne voudrais pas abuser... mais je souhaite désormais sélectionner une plage de cellules à partir de la position actuelle jusqu'à une cellule appelée "chrono".
En fait, je suis en train de remplacer mes vielles formules excel 4!!!

@bernard_daniel_1950 

Range(ActiveCell, Range("chrono")).Select

Encore merci!
Mais je ne vais pas continuer à vous solliciter ainsi sans arrêt...
Auriez vous un site ou un bouquin à me conseiller?
ceux que j'ai trouvés sur le net ne sont pas très satisfaisants, du moins pour mon (très faible) niveau!
Merci!
J'avais pourtant promis, mais le livre commandé n'arrivera que la semaine prochaine!
Je bute sur une action:
------------------------------
Application.ScreenUpdating = False
Application.Goto Reference:="modpass"
Dim mdp As String
mdp = InputBox("Saisissez le mot de passe!", "Action protégée par mot de passe.")
If mdp <> "biblio" Then
MsgBox "mot de passe incorrect!"
End If
If MsgBox("Cette action va réinitialiser la grille; es données enregistrées seront conservées. Elle peut être renouvelée à tout moment. Si c'est ce que vous souhaitez faire, cliquez sur 'Oui', sinon sur 'Non'.", vbYesNo, "demande de confirmation") = vbNo Then
MsgBox "Réinitialisation abandonnée!"
End If
Application.Goto Reference:="sauvcodbarre"
---------------------------------
A chaque fois, le message s'affiche mais... la macro continue imperturbablement!
Que faire pour qu'elle s'arrête si 1/ le mot de passe est incorrect; 2/ si la réponse est non à la deuxième question? (même problème, je suppose!)
Cette fois ci, c'est vraiment promis!!!

@bernard_daniel_1950 

C'est pas grave.

Essayez

    Application.ScreenUpdating = False
    Application.Goto Reference:="modpass"
    Dim mdp As String
    mdp = InputBox("Saisissez le mot de passe!", "Action protégée par mot de passe.")
    If mdp <> "biblio" Then
        MsgBox "mot de passe incorrect!"
        Application.ScreenUpdating = True
        Exit Sub
    End If
    If MsgBox("Cette action va réinitialiser la grille; es données enregistrées seront conservées. " & _
            "Elle peut être renouvelée à tout moment. Si c'est ce que vous souhaitez faire, " & _
            "cliquez sur 'Oui', sinon sur 'Non'.", vbYesNo, "Demande de confirmation") = vbNo Then
        MsgBox "Réinitialisation abandonnée!"
        Application.ScreenUpdating = True
        Exit Sub
    End If
    Application.Goto Reference:="sauvcodbarre"

 

Bonsoir,
Je sais, je n'ai aucune parole... Mais il y va de mon sommeil!!!
j'ai écrit ceci:
-----------------------
Dim s As String
s = InputBox("Scannez le document, puis cliquez sur 'OK'; en fin de série, cliquez sur OK! ", " Enregistrement du retour ")
If s = "" Then Exit Sub
Application.Goto Reference:="codbarretour"
Do While ActiveCell > 0
ActiveCell.Offset(1, 0).Activate
Loop
Dim reto As Range
Set reto = Selection
reto.Select
reto.Formula = s
ActiveCell.Offset(0, 10).Activate
Range(ActiveCell, Range("chrono")).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveCell.Offset(0, -12).Activate
End Sub
-----------------------------------
Et je souhaiterais que, à la fin du processus, tant que s est différent de zéro, la macro reprenne au niveau de l'input box.
J'ai cherché partout, sans succès!
best response confirmed by bernard_daniel_1950 (Contributor)
Solution

@bernard_daniel_1950 

Peut-être:

    Dim s As String
    Dim reto As Range
    Set reto = Selection
    Do
        s = InputBox("Scannez le document, puis cliquez sur 'OK'; en fin de série, cliquez sur OK! ", " Enregistrement du retour ")
        If s = "" Then Exit Do
        Application.Goto Reference:="codbarretour"
        Do While ActiveCell > 0
            ActiveCell.Offset(1, 0).Activate
        Loop
        reto.Select
        reto.Formula = s
        ActiveCell.Offset(0, 10).Activate
        Range(ActiveCell, Range("chrono")).Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues
        ActiveCell.Offset(0, -12).Activate
    Loop

 

Encore merci!
Bonjour!
Toute honte bue (et le bouquin n'arrivant toujours pas, je soumets cet écueil à votre perspicacité!
J'ai écrit ceci:
---------------------------
Application.ScreenUpdating = False
MsgBox "Ceci va actualiser les données en provenance de acredit.Pour les cartes bancaires, le correctif est fixé sur 11 (novembre). Pour l'actualiser, modifiez le en case A4, puis cliquez sur 'MAJ'(dans 'import crédit m')."
Application.Goto Reference:="arriveecb"
Range("F3").Select
ActiveCell.FormulaR1C1 = _
"='[acredit m.xlsm]CB 36048 00010074603 # 112022'!R[3]C1"
Range("A4").Select
Dim s As String
s = InputBox("Modifiez le mois!", " Enregistrement du retour ", Cells(3, 6))
------------------------------------
Je voudrais que 'par défaut' affiche la formule contenue dans la cellule de référence, et non sa valeur affichée, afin de la rectifier...
En fait, rectifier le mois (qui suit la dièse)!
Merci d'avance!

@bernard_daniel_1950 

Peut-être

    s = InputBox("Modifiez le mois!", " Enregistrement du retour ", Cells(3, 6).FormulaR1C1Local)

Ou bien??

    s = InputBox("Tapez le mois comme mmaaaa", " Enregistrement du retour ", Format(Date, "mmyyyy"))
    Range("F3").FormulaR1C1 = _
        "='[acredit m.xlsm]CB 36048 00010074603 # " & s * "'!R[3]C1"
    Range("A4").Select

 

re,
j'ai donc tapé ceci:
------------------------
Application.ScreenUpdating = False
MsgBox "Ceci va actualiser les données en provenance de acredit.Pour les cartes bancaires, le correctif est fixé sur 11 (novembre). Pour l'actualiser, modifiez le en case A4, puis cliquez sur 'MAJ'(dans 'import crédit m')."
Application.Goto Reference:="arriveecb"
Range("F3").Select
ActiveCell.FormulaR1C1 = _
"='[acredit m.xlsm]CB 36048 00010074603 # 112022'!R[3]C1"
Range("A4").Select
Dim s As String
s = InputBox("Tapez le mois comme mmaaaa", " Modification du mois ", Format(Date, "mmyyyy"))
Range("F3").FormulaR1C1 = _
"='[acredit m.xlsm]CB 36048 00010074603 # " & s * "'!R[3]C1"
Range("A4").Select
Range("B4").Select
-----------------------------------
J'ai une erreur d'exécution 13 au niveau de:
Range("F3").FormulaR1C1 = _
"='[acredit m.xlsm]CB 36048 00010074603 # " & s * "'!R[3]C1"
J'ai dû mal reproduire quelque chose, mais je ne vois pas quoi!

@bernard_daniel_1950 

Excusez moi, c'est ma erreur.

 

Range("F3").FormulaR1C1 = _
"='[acredit m.xlsm]CB 36048 00010074603 # " & s & "'!R[3]C1"

Encore moi... et "programmation vba pour les nuls" ne m'aide pas !
J'ai écrit:
------------------
Application.Goto Reference:="moisan"
Do While Active.cell.Value <> "ftransfert"
ActiveCell.Offset(1, 0).Select
Loop
------------------
Donc, <> de la valeur d'une cellule nommée "ftransfert"...
Et ça ne lui plaît pas!
Je suis -presque-désespéré!

@bernard_daniel_1950 

 

Do While Active.cell.Value <> "ftransfert"

 

serait être:

 

Do While ActiveCell.Value <> "ftransfert"

C'est trop bête!
Je crois que je vais aller me coucher...
Merci!