Problème avec une Boucle; VBA
EdouardAUREL
-
EdouardAUREL -
EdouardAUREL -
Bonjour, j'ai actuellement un problème avec une boucle toute simple normalement. Voici mon code :
Private Sub formule()
Dim i As Integer
For i = 9 To 3000
Range("Di").Select
ActiveCell.FormulaR1C1 = _
"=IF('INFOS CLIENTS'!RiC15="""","""",IF(AND(RiC15<21,OR('SYNTHESE RELANCE'!RiC11=""NO"",'SYNTHESE RELANCE'!RiC11="""")),""EN COURS"",IF('SYNTHESE RELANCE'!RiC11=""YES"",""AUTORISEE"",IF(AND(RiC15>21,OR('SYNTHESE RELANCE'!RiC11=""NO"",'SYNTHESE RELANCE'!RiC11="""")),""PENDING"",""""))))"
Next i
End Sub
Lorsque je lance mon code, celui me me renvoie "Run-Time error 1004", ceci est d'autant plus surprenant que ce code marche très bien sur une cellue, par exemple, si je veux écrire cette formule dans D9, le code suivant fonctionne très bien :
Private Sub formule()
Range("D9").Select
ActiveCell.FormulaR1C1 = _
"=IF('INFOS CLIENTS'!R9C15="""","""",IF(AND(R9C15<21,OR('SYNTHESE RELANCE'!R9C11=""NO"",'SYNTHESE RELANCE'!R9C11="""")),""EN COURS"",IF('SYNTHESE RELANCE'!R9C11=""YES"",""AUTORISEE"",IF(AND(R9C15>21,OR('SYNTHESE RELANCE'!R9C11=""NO"",'SYNTHESE RELANCE'!R9C11="""")),""PENDING"",""""))))"
End Sub
Avez-vous une idée?
Merci.
Private Sub formule()
Dim i As Integer
For i = 9 To 3000
Range("Di").Select
ActiveCell.FormulaR1C1 = _
"=IF('INFOS CLIENTS'!RiC15="""","""",IF(AND(RiC15<21,OR('SYNTHESE RELANCE'!RiC11=""NO"",'SYNTHESE RELANCE'!RiC11="""")),""EN COURS"",IF('SYNTHESE RELANCE'!RiC11=""YES"",""AUTORISEE"",IF(AND(RiC15>21,OR('SYNTHESE RELANCE'!RiC11=""NO"",'SYNTHESE RELANCE'!RiC11="""")),""PENDING"",""""))))"
Next i
End Sub
Lorsque je lance mon code, celui me me renvoie "Run-Time error 1004", ceci est d'autant plus surprenant que ce code marche très bien sur une cellue, par exemple, si je veux écrire cette formule dans D9, le code suivant fonctionne très bien :
Private Sub formule()
Range("D9").Select
ActiveCell.FormulaR1C1 = _
"=IF('INFOS CLIENTS'!R9C15="""","""",IF(AND(R9C15<21,OR('SYNTHESE RELANCE'!R9C11=""NO"",'SYNTHESE RELANCE'!R9C11="""")),""EN COURS"",IF('SYNTHESE RELANCE'!R9C11=""YES"",""AUTORISEE"",IF(AND(R9C15>21,OR('SYNTHESE RELANCE'!R9C11=""NO"",'SYNTHESE RELANCE'!R9C11="""")),""PENDING"",""""))))"
End Sub
Avez-vous une idée?
Merci.
A voir également:
- Problème avec une Boucle; VBA
- Vba range avec variable ✓ - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
- Télé samsung s'éteint et se rallume en boucle - Forum Téléviseurs
- Vba excel sélectionner une plage de cellules variable ✓ - Forum VB / VBA
- Vba attendre 1 seconde ✓ - Forum VB / VBA
5 réponses
Bonjour le problème venait bien de là, merci mais ça ne marche pas. En fait, je voudrais copier cette formule sur excel :
=IF('INFOS CLIENTS'!$O$9="";"";IF(AND($O$9<21;OR('SYNTHESE RELANCE'!$K$9="NO";'SYNTHESE RELANCE'!$K$9=""));"EN COURS";IF('SYNTHESE RELANCE'!$K$9="YES";"AUTORISEE";IF(AND($O$9>21;OR('SYNTHESE RELANCE'!$K$9="NO";'SYNTHESE RELANCE'!$K$9=""));"PENDING";""))))
sur toutes mes lignes de 9 a 3000 de ma colonne D (et je ne peux pas utiliser $D9 car après une fonction VBA me colle mes cellules sur d'autres feuille et me changent donc la valeur). Cependant avec ma formule précédente :
Private sub Formule ()
Dim i As Integer
For i = 9 To 3000
Range("Di").Select
ActiveCell.FormulaR1C1 = _
"=IF('INFOS CLIENTS'!RiC15="""","""",IF(AND(RiC15<21,OR('SYNTHESE RELANCE'!RiC11=""NO"",'SYNTHESE RELANCE'!RiC11="""")),""EN COURS"",IF('SYNTHESE RELANCE'!RiC11=""YES"",""AUTORISEE"",IF(AND(RiC15>21,OR('SYNTHESE RELANCE'!RiC11=""NO"",'SYNTHESE RELANCE'!RiC11="""")),""PENDING"",""""))))"
Next i
End Sub
ça ne marche pas, ça me colle une mauvaise formule sans $D$9, $D$10... ça me garde les i enfin c'est tout faux.
Savez-vous comment faire ?
Merci.
=IF('INFOS CLIENTS'!$O$9="";"";IF(AND($O$9<21;OR('SYNTHESE RELANCE'!$K$9="NO";'SYNTHESE RELANCE'!$K$9=""));"EN COURS";IF('SYNTHESE RELANCE'!$K$9="YES";"AUTORISEE";IF(AND($O$9>21;OR('SYNTHESE RELANCE'!$K$9="NO";'SYNTHESE RELANCE'!$K$9=""));"PENDING";""))))
sur toutes mes lignes de 9 a 3000 de ma colonne D (et je ne peux pas utiliser $D9 car après une fonction VBA me colle mes cellules sur d'autres feuille et me changent donc la valeur). Cependant avec ma formule précédente :
Private sub Formule ()
Dim i As Integer
For i = 9 To 3000
Range("Di").Select
ActiveCell.FormulaR1C1 = _
"=IF('INFOS CLIENTS'!RiC15="""","""",IF(AND(RiC15<21,OR('SYNTHESE RELANCE'!RiC11=""NO"",'SYNTHESE RELANCE'!RiC11="""")),""EN COURS"",IF('SYNTHESE RELANCE'!RiC11=""YES"",""AUTORISEE"",IF(AND(RiC15>21,OR('SYNTHESE RELANCE'!RiC11=""NO"",'SYNTHESE RELANCE'!RiC11="""")),""PENDING"",""""))))"
Next i
End Sub
ça ne marche pas, ça me colle une mauvaise formule sans $D$9, $D$10... ça me garde les i enfin c'est tout faux.
Savez-vous comment faire ?
Merci.
OK, merci éric, un des problèmes venait de là, la macro suivante tourne bien :
Private Sub formule()
Dim i As Integer
For i = 9 To 3000
Range("D" & i).Select
ActiveCell.FormulaR1C1 = _
"=IF('INFOS CLIENTS'!R" & i & "C15="""","""",IF(AND(R" & i & "C15<21,OR('SYNTHESE RELANCE'!R" & i & "C11=""NO"",'SYNTHESE RELANCE'!R" & i & "C11="""")),""EN COURS"",IF('SYNTHESE RELANCE'!R" & i & "C11=""YES"",""AUTORISEE"",IF(AND(R" & i & "C15>21,OR('SYNTHESE RELANCE'!R" & i & "C11=""NO"",'SYNTHESE RELANCE'!R" & i & "C11="""")),""PENDING"",""""))))"
Next i
End Sub
Cependant toujours un problème, elle me copie la formule dans toutes les cases mais avec un dollar juste devant la lettre et non devant la lettre comme je le souhaiterais. En résumé, au lieu de me copier ceci :
IF('INFOS CLIENTS'!$O$9="";"";IF(AND($O$9<21;OR('SYNTHESE RELANCE'!$K$9="NO";'SYNTHESE RELANCE'!$K$9=""));"EN COURS";IF('SYNTHESE RELANCE'!$K$9="YES";"AUTORISEE";IF(AND($O$9>21;OR('SYNTHESE RELANCE'!$K$9="NO";'SYNTHESE RELANCE'!$K$9=""));"PENDING";""))))
Elle me colle ceci :
IF('INFOS CLIENTS'!$O9="";"";IF(AND($O9<21;OR('SYNTHESE RELANCE'!$K9="NO";'SYNTHESE RELANCE'!$K9=""));"EN COURS";IF('SYNTHESE RELANCE'!$K9="YES";"AUTORISEE";IF(AND($O9>21;OR('SYNTHESE RELANCE'!$K9="NO";'SYNTHESE RELANCE'!$K9=""));"PENDING";""))))
Merci d'avance si vous avez une idée, bonne journée
Private Sub formule()
Dim i As Integer
For i = 9 To 3000
Range("D" & i).Select
ActiveCell.FormulaR1C1 = _
"=IF('INFOS CLIENTS'!R" & i & "C15="""","""",IF(AND(R" & i & "C15<21,OR('SYNTHESE RELANCE'!R" & i & "C11=""NO"",'SYNTHESE RELANCE'!R" & i & "C11="""")),""EN COURS"",IF('SYNTHESE RELANCE'!R" & i & "C11=""YES"",""AUTORISEE"",IF(AND(R" & i & "C15>21,OR('SYNTHESE RELANCE'!R" & i & "C11=""NO"",'SYNTHESE RELANCE'!R" & i & "C11="""")),""PENDING"",""""))))"
Next i
End Sub
Cependant toujours un problème, elle me copie la formule dans toutes les cases mais avec un dollar juste devant la lettre et non devant la lettre comme je le souhaiterais. En résumé, au lieu de me copier ceci :
IF('INFOS CLIENTS'!$O$9="";"";IF(AND($O$9<21;OR('SYNTHESE RELANCE'!$K$9="NO";'SYNTHESE RELANCE'!$K$9=""));"EN COURS";IF('SYNTHESE RELANCE'!$K$9="YES";"AUTORISEE";IF(AND($O$9>21;OR('SYNTHESE RELANCE'!$K$9="NO";'SYNTHESE RELANCE'!$K$9=""));"PENDING";""))))
Elle me colle ceci :
IF('INFOS CLIENTS'!$O9="";"";IF(AND($O9<21;OR('SYNTHESE RELANCE'!$K9="NO";'SYNTHESE RELANCE'!$K9=""));"EN COURS";IF('SYNTHESE RELANCE'!$K9="YES";"AUTORISEE";IF(AND($O9>21;OR('SYNTHESE RELANCE'!$K9="NO";'SYNTHESE RELANCE'!$K9=""));"PENDING";""))))
Merci d'avance si vous avez une idée, bonne journée
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question