Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Ecrire une fonction Excel par VBA

3 réponses
Avatar
LucienMarcel
Bonjour à tous.
Avec mes piètres connaissances de VBA (sous Excel2003), j'essaye
désespéremment d'écrire en programmation VBA: =SI(OU(AU3="Logistique locale
ou de zone";AU3="Mitel");"LogMit";" ") dans une zone de la première ligne
d'un tableau que je récupère tous les mois, dans l'intention de recopier
cette formule sur toutes les lignes. Mais je me heurte à un message d'erreur
du débogueur: "Erreur de compilation Attendu fin d'instruction".
Comment dois-je écrire cette condition pourtant simple ?
--
LucienMarcel

3 réponses

Avatar
michdenis
à placer dans un module standard :

'----------------------------
Function Test(Rg As Range)

Test = Evaluate("if(or(" & Rg.Address(0, 0) & _
"=""Logistique locale ou de zone""," & _
Rg.Address(0, 0) & "=""Mitel""),""LogMit"","""")")

End Function
'----------------------------

Dans la feuille de calcul, tu inscris dans la cellule :
=Test(AU3)

Tu peux recopier la formule sur les cellules de ta colonne.



"LucienMarcel" a écrit dans le
message de news:
Bonjour à tous.
Avec mes piètres connaissances de VBA (sous Excel2003), j'essaye
désespéremment d'écrire en programmation VBA: =SI(OU(AU3="Logistique locale
ou de zone";AU3="Mitel");"LogMit";" ") dans une zone de la première ligne
d'un tableau que je récupère tous les mois, dans l'intention de recopier
cette formule sur toutes les lignes. Mais je me heurte à un message d'erreur
du débogueur: "Erreur de compilation Attendu fin d'instruction".
Comment dois-je écrire cette condition pourtant simple ?
--
LucienMarcel
Avatar
Papyjac
Bonjour Lucien,

Comme tu l'auras compris, le résultat est un peu "du chinois". Une formule
déjà, ce peut être coton, mais rédigée en VBA c'est encore pire ! Et je te
dis pas, pour la maintenance.

Donc, je déconseille cette technique là, si on peut l'éviter.

Personnellement, j'écris ma formule dans un classeur modèle (c'est à dire
sans donnée, mais de même structure que le classeur contenant les données).
Ensuite, j'effectue un copier-coller de cette formule, et Excel ce charge de
tranposer les adresses des lignes et colonnes

Dans ce cas, mon code est indépendant des formules

--
Papyjac


"michdenis" a écrit :

à placer dans un module standard :

'----------------------------
Function Test(Rg As Range)

Test = Evaluate("if(or(" & Rg.Address(0, 0) & _
"=""Logistique locale ou de zone""," & _
Rg.Address(0, 0) & "=""Mitel""),""LogMit"","""")")

End Function
'----------------------------

Dans la feuille de calcul, tu inscris dans la cellule :
=Test(AU3)

Tu peux recopier la formule sur les cellules de ta colonne.



"LucienMarcel" a écrit dans le
message de news:
Bonjour à tous.
Avec mes piètres connaissances de VBA (sous Excel2003), j'essaye
désespéremment d'écrire en programmation VBA: =SI(OU(AU3="Logistique locale
ou de zone";AU3="Mitel");"LogMit";" ") dans une zone de la première ligne
d'un tableau que je récupère tous les mois, dans l'intention de recopier
cette formule sur toutes les lignes. Mais je me heurte à un message d'erreur
du débogueur: "Erreur de compilation Attendu fin d'instruction".
Comment dois-je écrire cette condition pourtant simple ?
--
LucienMarcel




Avatar
LucienMarcel
Merci à tous les deux. Je vais essayer les 2 méthodes.
Luc
--
LucienMarcel


"LucienMarcel" a écrit :

Bonjour à tous.
Avec mes piètres connaissances de VBA (sous Excel2003), j'essaye
désespéremment d'écrire en programmation VBA: =SI(OU(AU3="Logistique locale
ou de zone";AU3="Mitel");"LogMit";" ") dans une zone de la première ligne
d'un tableau que je récupère tous les mois, dans l'intention de recopier
cette formule sur toutes les lignes. Mais je me heurte à un message d'erreur
du débogueur: "Erreur de compilation Attendu fin d'instruction".
Comment dois-je écrire cette condition pourtant simple ?
--
LucienMarcel