OVH Cloud OVH Cloud

Transformation d'une formule SI & ET en VBA

11 réponses
Avatar
nini95
Bonjour,
J'espère trouver ma solution sur ce forum et vous en remercie par avance. J'aurais une question pour vous.

Serait il possible de transformer la formule si dessous en macro
=SI(ET(X3="oui";Y3="");AA3;"")

(Cette formule est mise dans la colonne AB, la formule si dessus est l'exemple de la troisième ligne, mais la formule a été "glissée" sur les 800 lignes de mon tableau et j'aimerais que la macro fonctionne pour toutes les lignes de la colonne AB)

Par avance merci beaucoup de votre aide

10 réponses

1 2
Avatar
Jacky
Bonjour,
Ceci prend en compte une plage "AB2:AB800"
C'est le résultat qui est inscrit en dur et non pas la formule (dans l'exemple)
Le nombre de ligne peut être calculé(sur une colonne précise sans vide)
'-----------------
Sub jj()
Dim NbLignes
NbLignes = 800
Set plage = Range("AB2:AB" & NbLignes)
For Each c In plage
c.Value = IIf(c.Offset(, -4) = "oui" And c.Offset(, -3) = "", c.Offset(, -1), "")
Next
End Sub
'----------------

--
Salutations
JJ


"nini95" a écrit dans le message de news:

Bonjour,
J'espère trouver ma solution sur ce forum et vous en remercie par avance.
J'aurais une question pour vous.

Serait il possible de transformer la formule si dessous en macro
=SI(ET(X3="oui";Y3="");AA3;"")

(Cette formule est mise dans la colonne AB, la formule si dessus est l'exemple
de la troisième ligne, mais la formule a été "glissée" sur les 800 lignes de mon
tableau et j'aimerais que la macro fonctionne pour toutes les lignes de la
colonne AB)

Par avance merci beaucoup de votre aide
Avatar
nini95
Le lundi 03 Décembre 2012 à 14:53 par nini95 :
Bonjour,
J'espère trouver ma solution sur ce forum et vous en remercie par
avance. J'aurais une question pour vous.

Serait il possible de transformer la formule si dessous en macro
=SI(ET(X3="oui";Y3="");AA3;"")

(Cette formule est mise dans la colonne AB, la formule si dessus est l'exemple
de la troisième ligne, mais la formule a été
"glissée" sur les 800 lignes de mon tableau et j'aimerais que
la macro fonctionne pour toutes les lignes de la colonne AB)

Par avance merci beaucoup de votre aide


Merci pour cette réponse mais cela ne veux pas fonctionner..... :-(

Dois mettre ce code dans le module ou directement sur la feuille?

Merci de ta réponse en tout cas
Avatar
nini95
Le lundi 03 Décembre 2012 à 14:53 par nini95 :
Bonjour,
J'espère trouver ma solution sur ce forum et vous en remercie par
avance. J'aurais une question pour vous.

Serait il possible de transformer la formule si dessous en macro
=SI(ET(X3="oui";Y3="");AA3;"")

(Cette formule est mise dans la colonne AB, la formule si dessus est l'exemple
de la troisième ligne, mais la formule a été
"glissée" sur les 800 lignes de mon tableau et j'aimerais que
la macro fonctionne pour toutes les lignes de la colonne AB)

Par avance merci beaucoup de votre aide


Merci pour cette réponse mais cela ne veux pas fonctionner..... :-(

Dois mettre ce code dans le module ou directement sur la feuille?

Merci de ta réponse en tout cas
Avatar
Jacky
Re..
Dois mettre ce code dans le module ou directement sur la feuille?


Dans un module standard

Cela dépend du projet, on peut aussi déclencher par un événement
Exemple ici avec un bouton de lancement.
http://cjoint.com/?BLdqSe8azjl

--
Salutations
JJ


"nini95" a écrit dans le message de news:

Le lundi 03 Décembre 2012 à 14:53 par nini95 :
Bonjour,
J'espère trouver ma solution sur ce forum et vous en remercie par
avance. J'aurais une question pour vous.

Serait il possible de transformer la formule si dessous en macro
=SI(ET(X3="oui";Y3="");AA3;"")

(Cette formule est mise dans la colonne AB, la formule si dessus est


l'exemple
de la troisième ligne, mais la formule a été
"glissée" sur les 800 lignes de mon tableau et j'aimerais que
la macro fonctionne pour toutes les lignes de la colonne AB)

Par avance merci beaucoup de votre aide


Merci pour cette réponse mais cela ne veux pas fonctionner..... :-(

Dois mettre ce code dans le module ou directement sur la feuille?

Merci de ta réponse en tout cas
Avatar
MichD
Bonjour,

Essaie ceci :

Tu copies cette procédure dans le module de la feuille ou
dans un module standard.

N'oublie pas de modifier le nom de la "feuil1" pour celui de ton application
dans la procédure.
'----------------------------------
Sub test()
Dim DerLig As Long
With Worksheets("Feuil1") 'Nom feuille à adapter
DerLig = .Cells.Find("*", LookIn:=xlFormulas, _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
.Range("AB3:AB" & DerLig).Formula = "=IF(AND(X3=""oui"",Y3=""""),AA3,"""")"
.Range("AB3:AB" & DerLig).FillDown
End With
End Sub
'----------------------------------



MichD
--------------------------------------------------------------
"nini95" a écrit dans le message de groupe de discussion :

Bonjour,
J'espère trouver ma solution sur ce forum et vous en remercie par avance.
J'aurais une question pour vous.

Serait il possible de transformer la formule si dessous en macro
=SI(ET(X3="oui";Y3="");AA3;"")

(Cette formule est mise dans la colonne AB, la formule si dessus est l'exemple
de la troisième ligne, mais la formule a été "glissée" sur les 800 lignes de mon
tableau et j'aimerais que la macro fonctionne pour toutes les lignes de la
colonne AB)

Par avance merci beaucoup de votre aide
Avatar
Péhemme
Bonjour Denis,

L'instruction :
.Range("AB3:AB" & DerLig).FillDown
est-elle réellement nécessaire ?
sachant que tu as déjà rempli ton champ avec l'instruction précédente :
.Range("AB3:AB" & DerLig).Formula = "=IF(AND(X3=""oui"",Y3=""""),AA3,"""")"

Bonne soirée
Michel



"MichD" a écrit dans le message de groupe de discussion :
k9iheo$nm8$

Bonjour,

Essaie ceci :

Tu copies cette procédure dans le module de la feuille ou
dans un module standard.

N'oublie pas de modifier le nom de la "feuil1" pour celui de ton application
dans la procédure.
'----------------------------------
Sub test()
Dim DerLig As Long
With Worksheets("Feuil1") 'Nom feuille à adapter
DerLig = .Cells.Find("*", LookIn:=xlFormulas, _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
.Range("AB3:AB" & DerLig).Formula =
"=IF(AND(X3=""oui"",Y3=""""),AA3,"""")"
.Range("AB3:AB" & DerLig).FillDown
End With
End Sub
'----------------------------------



MichD
--------------------------------------------------------------
"nini95" a écrit dans le message de groupe de discussion :


Bonjour,
J'espère trouver ma solution sur ce forum et vous en remercie par avance.
J'aurais une question pour vous.

Serait il possible de transformer la formule si dessous en macro
=SI(ET(X3="oui";Y3="");AA3;"")

(Cette formule est mise dans la colonne AB, la formule si dessus est
l'exemple
de la troisième ligne, mais la formule a été "glissée" sur les 800 lignes de
mon
tableau et j'aimerais que la macro fonctionne pour toutes les lignes de la
colonne AB)

Par avance merci beaucoup de votre aide
Avatar
MichD
Merci de l'avoir souligné, les 2 dernières lignes devraient s'écrire ainsi...

.Range("AB3").Formula = "=IF(AND(X3=""oui"",Y3=""""),AA3,"""")"
.Range("AB3:AB" & DerLig).FillDown



MichD
--------------------------------------------------------------
Avatar
Péhemme
;-)
Merci
Michel



"MichD" a écrit dans le message de groupe de discussion :
k9ldeq$l52$

Merci de l'avoir souligné, les 2 dernières lignes devraient s'écrire
ainsi...

.Range("AB3").Formula = "=IF(AND(X3=""oui"",Y3=""""),AA3,"""")"
.Range("AB3:AB" & DerLig).FillDown



MichD
--------------------------------------------------------------
Avatar
Jacquouille
PM, le seul qui s'accroche ?



Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"Péhemme" a écrit dans le message de groupe de discussion :
50be3d34$0$9011$

;-)
Merci
Michel



"MichD" a écrit dans le message de groupe de discussion :
k9ldeq$l52$

Merci de l'avoir souligné, les 2 dernières lignes devraient s'écrire
ainsi...

.Range("AB3").Formula = "=IF(AND(X3=""oui"",Y3=""""),AA3,"""")"
.Range("AB3:AB" & DerLig).FillDown



MichD
--------------------------------------------------------------
Avatar
Péhemme
Et oui mon cher Jacques... Tu as de la mémoire...
Cela nous rajeunit, et je m'accroche toujours.
Michel


"Jacquouille" a écrit dans le message de groupe de discussion :
50be4080$0$3121$

PM, le seul qui s'accroche ?



Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"Péhemme" a écrit dans le message de groupe de discussion :
50be3d34$0$9011$

;-)
Merci
Michel



"MichD" a écrit dans le message de groupe de discussion :
k9ldeq$l52$

Merci de l'avoir souligné, les 2 dernières lignes devraient s'écrire
ainsi...

.Range("AB3").Formula = "=IF(AND(X3=""oui"",Y3=""""),AA3,"""")"
.Range("AB3:AB" & DerLig).FillDown



MichD
--------------------------------------------------------------
1 2