[VBA] Petit souci de syntaxe

6 réponses
Avatar
ThierryP
Bonjour le forum !
Je patauge lamentablement dans quelque chose de simple :-(

Par macro, je souhaite entrer en colonne N la formule : =A + "#" + E (N3=A3+"#" + E3,etc...) mais sans boucler sur la colonne.

Et je sèche......

Merci d'avance Í  tout généreux contributeur ! (au hasard.... Denis !!!)

ThierryP

6 réponses

Avatar
Jc
Salut,
As-tu essyé par l'enregistreur de macro pour voir ce que cela donnait,
et après on adapte.
Par macro, je souhaite entrer en colonne N la formule : =A + "#" + E
(N3£+"#" + E3,etc...) mais sans boucler sur la colonne.

--
______________________________________________
Jc
Avatar
ThierryP
J'ai posté un peu vite...... Mon souci n'est pas d'écrire dans une cellule en particulier, c'est d'écrire dans tout un range de la colonne N
ThierryP
Avatar
MichD
Le 08/03/22 Í  04:40, ThierryP a écrit :
Bonjour le forum !
Je patauge lamentablement dans quelque chose de simple :-(
Par macro, je souhaite entrer en colonne N la formule : =A + "#" + E (N3£+"#" + E3,etc...) mais sans boucler sur la colonne.
Et je sèche......
Merci d'avance Í  tout généreux contributeur ! (au hasard.... Denis !!!)
ThierryP

Bonjour,
La question n'est pas claire.
=A + "#" + E (N3£+"#" + E3,etc...)
Quelle serait la syntaxe de ta formule si tu la créais directement dans
une cellule?
Que doit faire cette formule?
Que représente la lettre A, E dans la formule?
Que signifie l'expression "ect" dans la formule?
O͹ veux-tu copier ta formule?
Bonne chance de trouver une réponse satisfaisante Í  ta question sur les
forums Excel.
MichD
Avatar
MichD
Le 08/03/22 Í  09:20, ThierryP a écrit :
£ & "#" & E3
N4 : ¤ & "#" & E4

VoilÍ  :
'--------------------------------
Sub test()
'Identification des variables
Dim Rg As Range
Dim Rg1 As Range
With Feuil1
'La valeur de ces variables (définir)
Set Rg = .Range("A3:A" & .Range("A" & Rows.Count).End(xlUp).Row)
Set Rg1 = .Range("E3:E" & .Range("E" & Rows.Count).End(xlUp).Row)
End With
'Une aide, dans le message, tu devrais avoir la même syntaxe
'que tu veux retrouver dans la cellule contenant la formule.
'Toujours non obligatoire, mais cela peut aider
MsgBox "=" & Rg(1).Address(0, 0) & "&""#""&" & Rg1(1).Address(0, 0) & ""
'VoilÍ  la formule
Feuil1.Range("N3:N10").Formula = _
"=" & Rg(1).Address(0, 0) & "&""#""&" & Rg1(1).Address(0, 0) & ""
End Sub
'--------------------------------
Une explication sur cette section :
Rg(1).Address(0, 0)
Rg(1) retourne la première cellule de la plage Rg soit A3
Pour obtenir l'adresse, il s'agit d'ajouter Rg.address
cette section (0,0) signifie que l'adresse est relative et
non absolue. Par conséquent dans la cellule N3, tu auras
l'adresse A3 et c'est la même chose pour la plage Rg1
Par conséquent, la ligne de code fait exactement ce que tu
ferais si tu entrais la formule directement dans la cellule
et que tu voulais la recopier sur la colonne, tu as besoin
d'une adresse relative et non absolue.
Pour ceci : & "&""#""&" &
À chaque extrémité il y a & qui est lÍ  pour réunir les parties
de la formule en vba. Sauf que dans la feuille de calcul tu
veux avoir la présence pour unir chacune des parties de la formule.
Le premier "& et le dernier &" comme ils sont entre guillemets,
feront partie de la formule. Pour le symbole #, tu dois l'entourer
d'un double guillemet parce qu'il est Í  l'intérieur d'un string
délimité par des guillemets.
Ce n'est pas tout de recopier la formule, il faut essayer de la
comprendre afin de pouvoir la reproduire.
MichD
Avatar
MichD
Le 08/03/22 Í  09:20, ThierryP a écrit :
Bonjour Denis,
Oui, j'ai posté un peu vite......
En colonne N, avec un nombre de lignes variables, je voudrais écrire dans chaque cellule la formule suivante :
Ex en cellule N3 : £ & "#" & E3
N4 : ¤ & "#" & E4
Le but est de créer un index unique sur chaque ligne en combinant les valeurs des colonnes A et E.
Je pourrais boucler jusqu'Í  la dernière ligne, masi ça peut être long, donc je voudrais le faire d'un coup sur le range N3:Nxxxx, Nxxxx étant le dernière cellule non vide de la colonne N mais je n'arrive pas Í  adapter la réponse que tu m'as faite Í  une question quasi similaire il y a quelques jours !
J'espère avoir été un peu plus clair !
ThierryP

En complétant,
La première cellule d'une plage d'un variable de type
"Range" peut être écrite de cette manière :
Rg(1,1) signifiant Rg(ligne,C0lonne)
En écrivant Rg(1) on signifie qu'on est sur la première ligne de
la plage de cellule.
Même chose pour .address(0,0) (voir l'aide d'Excel)
Le premier 0 pour la ligne relative et le deuxième la colonne relative.
MichD
Avatar
ThierryP
Avec un peu plus d'indications de ma part, ça va tout de suite mieux !
Merci encore pour toutes tes explications :-)
ThierryP