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

Problème de syntaxe If Else Then - Erreur éxécution 1004

7 réponses
Avatar
Fagt02
Bonjour,

J'ai semble t-il un problème de syntaxe avec ma macro.
Celle ci doit renvoyer sur la colonne H "Zone 1" ou "Zone 2" ou "Zone 3" etc, en fonction de ce que qui est contenu dans les colonnes E, F et G.
Mais le message suivant s'affiche lorsque je lance la macro: "Erreur d'éxécution '1004': Erreur définie par l'application ou par l'objet". Je ne comprends pas d'où vient l'erreur puisque la macro me semble correcte.


Voici la macro:



Sub B()
Dim i As Integer
derniereligne = 9
For i = 2 To derniereligne


If Worksheets("Tableau").Cells(i, 5).Value <> "B" Then

If Worksheets("Tableau").Cells(i, 6).Value = "A " Or Worksheets (;Tableau").Cells(i, 6).Value = "B " Or Worksheets("Tableau") Cells(i, 6).Value = "C " Then

If Worksheets("Tableau").Cells(i, 7).Value < 13 And Worksheets ("Tableau") Cells(i, 7).Value > 4 Then
Worksheets("Tableau").Cells(i, 8) = "Zone 2"
ElseIf Worksheets("Tableau").Cells(i, 7).Value < 21 And Worksheets("Tableau").Cells(i, 7).Value > 12 Then Worksheets("Tableau").Cells(i, 8) = "Zone 4"
Else: Worksheets("Tableau").Cells(i, 8) = "Zone 8"
End If

If Worksheets("Tableau").Cells(i, 7).Value < 13 And Worksheets("Tableau").Cells(i, 7).Value > 4 Then
Worksheets("Tableau").Cells(i, 8) = "Zone 1"
ElseIf Worksheets("Tableau").Cells(i, 7).Value < 21 And Worksheets("Tableau").Cells(i, 7).Value > 12 Then Worksheets("Tableau").Cells(i, 8) = "Zone 3"
Else: Worksheets("Tableau";).Cells(i, 8) = "Zone 7"
End If
End If
End If

Next
End Sub



Si vous savez d'où vient le problème, votre aide serait vraiment la bienvenue !
Merci

7 réponses

Avatar
MichD
Bonjour,

Essaie comme ceci, tu avais des problèmes de syntaxes.
Attention, le service de messagerie peut effectuer des
coupures intempestives.

'----------------------------------------------------------------------------------
Sub B()
Dim i As Integer
derniereligne = 9
For i = 2 To derniereligne


If Worksheets("Tableau").Cells(i, 5).Value <> "B" Then
If Worksheets("Tableau").Cells(i, 6).Value = "A " Or _
Worksheets("Tableau").Cells(i, 6).Value = "B " Or _
Worksheets("Tableau").Cells(i, 6).Value = "C " Then

If Worksheets("Tableau").Cells(i, 7).Value < 13 And _
Worksheets("Tableau").Cells(i, 7).Value > 4 Then
Worksheets("Tableau").Cells(i, 8) = "Zone 2"
ElseIf Worksheets("Tableau").Cells(i, 7).Value < 21 And _
Worksheets("Tableau").Cells(i, 7).Value > 12 Then
Worksheets("Tableau").Cells(i, 8) = "Zone 4"
Else
Worksheets("Tableau").Cells(i, 8) = "Zone 8"
End If

If Worksheets("Tableau").Cells(i, 7).Value < 13 And _
Worksheets("Tableau").Cells(i, 7).Value > 4 Then
Worksheets("Tableau").Cells(i, 8) = "Zone 1"
ElseIf Worksheets("Tableau").Cells(i, 7).Value < 21 And _
Worksheets("Tableau").Cells(i, 7).Value > 12 Then
Worksheets("Tableau").Cells(i, 8) = "Zone 3"
Else
Worksheets("Tableau").Cells(i, 8) = "Zone 7"
End If
End If
End If

Next
End Sub
'----------------------------------------------------------------------------------
Avatar
Jacquouille
Bonsoir Denis,

Avec tous ces IF, on n'aurait pas plus facile de faire avec un "choisir
(dont je ne possède pas la syntaxe...)" ????
...choisir("A";"B";"C") ???


Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"MichD" a écrit dans le message de groupe de discussion :
mdn3as$f5t$

Bonjour,

Essaie comme ceci, tu avais des problèmes de syntaxes.
Attention, le service de messagerie peut effectuer des
coupures intempestives.

'----------------------------------------------------------------------------------
Sub B()
Dim i As Integer
derniereligne = 9
For i = 2 To derniereligne


If Worksheets("Tableau").Cells(i, 5).Value <> "B" Then
If Worksheets("Tableau").Cells(i, 6).Value = "A " Or _
Worksheets("Tableau").Cells(i, 6).Value = "B " Or _
Worksheets("Tableau").Cells(i, 6).Value = "C " Then

If Worksheets("Tableau").Cells(i, 7).Value < 13 And _
Worksheets("Tableau").Cells(i, 7).Value > 4 Then
Worksheets("Tableau").Cells(i, 8) = "Zone 2"
ElseIf Worksheets("Tableau").Cells(i, 7).Value < 21 And _
Worksheets("Tableau").Cells(i, 7).Value > 12 Then
Worksheets("Tableau").Cells(i, 8) = "Zone 4"
Else
Worksheets("Tableau").Cells(i, 8) = "Zone 8"
End If

If Worksheets("Tableau").Cells(i, 7).Value < 13 And _
Worksheets("Tableau").Cells(i, 7).Value > 4 Then
Worksheets("Tableau").Cells(i, 8) = "Zone 1"
ElseIf Worksheets("Tableau").Cells(i, 7).Value < 21 And _
Worksheets("Tableau").Cells(i, 7).Value > 12 Then
Worksheets("Tableau").Cells(i, 8) = "Zone 3"
Else
Worksheets("Tableau").Cells(i, 8) = "Zone 7"
End If
End If
End If

Next
End Sub
'----------------------------------------------------------------------------------


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
Avatar
GL
Le 10/03/2015 18:16, Jacquouille a écrit :
Bonsoir Denis,

Avec tous ces IF, on n'aurait pas plus facile de faire avec un "choisir
(dont je ne possède pas la syntaxe...)" ????
...choisir("A";"B";"C") ???



Oui mais c'est une fonction de feuille, pas du VBA.
On peut aussi faire:

Select Case ...
Case 5 to 12 : ...
Case 13 to 21: ...
End Select

Mais seulement si les valeurs sont entières
( >4 n'est pas toujours équivalent à >=5 )

Cdt.



Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"MichD" a écrit dans le message de groupe de discussion :
mdn3as$f5t$

Bonjour,

Essaie comme ceci, tu avais des problèmes de syntaxes.
Attention, le service de messagerie peut effectuer des
coupures intempestives.

'----------------------------------------------------------------------------------

Sub B()
Dim i As Integer
derniereligne = 9
For i = 2 To derniereligne


If Worksheets("Tableau").Cells(i, 5).Value <> "B" Then
If Worksheets("Tableau").Cells(i, 6).Value = "A " Or _
Worksheets("Tableau").Cells(i, 6).Value = "B " Or _
Worksheets("Tableau").Cells(i, 6).Value = "C " Then

If Worksheets("Tableau").Cells(i, 7).Value < 13 And _
Worksheets("Tableau").Cells(i, 7).Value > 4 Then
Worksheets("Tableau").Cells(i, 8) = "Zone 2"
ElseIf Worksheets("Tableau").Cells(i, 7).Value < 21 And _
Worksheets("Tableau").Cells(i, 7).Value > 12 Then
Worksheets("Tableau").Cells(i, 8) = "Zone 4"
Else
Worksheets("Tableau").Cells(i, 8) = "Zone 8"
End If

If Worksheets("Tableau").Cells(i, 7).Value < 13 And _
Worksheets("Tableau").Cells(i, 7).Value > 4 Then
Worksheets("Tableau").Cells(i, 8) = "Zone 1"
ElseIf Worksheets("Tableau").Cells(i, 7).Value < 21 And _
Worksheets("Tableau").Cells(i, 7).Value > 12 Then
Worksheets("Tableau").Cells(i, 8) = "Zone 3"
Else
Worksheets("Tableau").Cells(i, 8) = "Zone 7"
End If
End If
End If

Next
End Sub
'----------------------------------------------------------------------------------



---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel antivirus Avast.
http://www.avast.com

Avatar
isabelle
bonjour à tous,

il doit y avoir un problème dans l'énoncé des conditions car les 2 groupes ont
les mêmes conditions mais doivent retourner des résultats différents
le resultat sera toujours Zone 1, Zone 3 ou Zone 7

If Worksheets("Tableau").Cells(i, 7).Value < 13 And _
Worksheets("Tableau").Cells(i, 7).Value > 4 Then
Worksheets("Tableau").Cells(i, 8) = "Zone 2"
ElseIf Worksheets("Tableau").Cells(i, 7).Value < 21 And _
Worksheets("Tableau").Cells(i, 7).Value > 12 Then
Worksheets("Tableau").Cells(i, 8) = "Zone 4"
Else
Worksheets("Tableau").Cells(i, 8) = "Zone 8"
End If


If Worksheets("Tableau").Cells(i, 7).Value < 13 And _
Worksheets("Tableau").Cells(i, 7).Value > 4 Then
Worksheets("Tableau").Cells(i, 8) = "Zone 1"
ElseIf Worksheets("Tableau").Cells(i, 7).Value < 21 And _
Worksheets("Tableau").Cells(i, 7).Value > 12 Then
Worksheets("Tableau").Cells(i, 8) = "Zone 3"
Else
Worksheets("Tableau").Cells(i, 8) = "Zone 7"
End If


isabelle
Avatar
MichD
Bonjour Isabelle,

| La question était : "Erreur d'éxécution 1004 Erreur définie par
l'application ou par l'objet".
et non de corriger le code! D'ailleurs, d'après l'information fournie, il
est difficile de savoir
quel est le but de ce code...Mais si tu peux corriger, ne te gêne pas! ;-))
Avatar
isabelle
désolé Denis si c'est tombé dans ta cour mais ma remarque était pour le demandeur,
isabelle

Le 2015-03-10 16:02, MichD a écrit :
Bonjour Isabelle,

| La question était : "Erreur d'éxécution 1004 Erreur définie par l'application
ou par l'objet".
et non de corriger le code! D'ailleurs, d'après l'information fournie, il est
difficile de savoir
quel est le but de ce code...Mais si tu peux corriger, ne te gêne pas! ;-))

Avatar
MichD
Ne sois pas désolé, ma remarque se voulait plus une plaisanterie qu'autre
chose!