VBA problème fonction for et if
vans7k
-
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Petit problème avec cette fonction quan j'execute le programme il me met comme erreur pas de else sans if mais quand je rajoute if ça ne marche pas non plus au secours je ne sais plus quoi faire !!!
Voici mon code :
NombrePersonne = ActiveWorkbook.Sheets("pieces").Range("NbPersonne").Text
Load UserForm1
UserForm1.Show
Unload UserForm1
For NumPersonne = 1 To (NombrePersonne)
If Sheets("pieces").Cells(2, NumPersonne + 4) = "N" Then UserForm1.Label1.Visible = True
Else: UserForm1.Label1.Visible = False
If Sheets("pieces").Cells(2, NumPersonne + 5) = "N" Then UserForm1.Label2.Visible = True
Else: UserForm1.Label2.Visible = False
If Sheets("pieces").Cells(4, NumPersonne + 6) = "N" Then UserForm1.Label3.Visible = True
Else: UserForm1.Label3.Visible = False
End If
End If
End If
UserForm1.Caption = Sheets("pieces").Cells(NumPersonne + 1, 3).Value
Load UserForm1
UserForm1.Show
Next NumPersonne
Merci
Vanessa
Petit problème avec cette fonction quan j'execute le programme il me met comme erreur pas de else sans if mais quand je rajoute if ça ne marche pas non plus au secours je ne sais plus quoi faire !!!
Voici mon code :
NombrePersonne = ActiveWorkbook.Sheets("pieces").Range("NbPersonne").Text
Load UserForm1
UserForm1.Show
Unload UserForm1
For NumPersonne = 1 To (NombrePersonne)
If Sheets("pieces").Cells(2, NumPersonne + 4) = "N" Then UserForm1.Label1.Visible = True
Else: UserForm1.Label1.Visible = False
If Sheets("pieces").Cells(2, NumPersonne + 5) = "N" Then UserForm1.Label2.Visible = True
Else: UserForm1.Label2.Visible = False
If Sheets("pieces").Cells(4, NumPersonne + 6) = "N" Then UserForm1.Label3.Visible = True
Else: UserForm1.Label3.Visible = False
End If
End If
End If
UserForm1.Caption = Sheets("pieces").Cells(NumPersonne + 1, 3).Value
Load UserForm1
UserForm1.Show
Next NumPersonne
Merci
Vanessa
A voir également:
- VBA problème fonction for et if
- Fonction si et - Guide
- Downloader for pc - Télécharger - Téléchargement & Transfert
- Idm for mac - Télécharger - Téléchargement & Transfert
- Copytrans heic for windows - Télécharger - Visionnage & Diaporama
- Instagram for pc - Télécharger - Divers Communication
6 réponses
Bonjour,
en premier, tu auras toujours une erreur puisque tu referme ton UserForm...
Et sans connaître les conditions que tu veux déterminer le code devrait avoir un aspect dans ce genre...
A+
si tu ne veux pas que l'UF soit visible si certaines condition ne sont pas remplie tu peu mettre l'UF Hide, soit à la place de..
Mettre..
Et de plus, tes conditions ne vont pas dans une boucle, du moins d'après ce que je peu voir au premier abord.
A+
en premier, tu auras toujours une erreur puisque tu referme ton UserForm...
UserForm1.Show Unload UserForm1 ..... ????
Et sans connaître les conditions que tu veux déterminer le code devrait avoir un aspect dans ce genre...
If Sheets("pieces").Cells(2, NumPersonne + 4) = "N" Then UserForm1.Label1.Visible = True ElseIf UserForm1.Label1.Visible = False Then If Sheets("pieces").Cells(2, NumPersonne + 5) = "N" Then UserForm1.Label2.Visible = True ElseIf UserForm1.Label2.Visible = False Then If Sheets("pieces").Cells(4, NumPersonne + 6) = "N" Then UserForm1.Label3.Visible = True Else UserForm1.Label3.Visible = False End If End If
A+
si tu ne veux pas que l'UF soit visible si certaines condition ne sont pas remplie tu peu mettre l'UF Hide, soit à la place de..
UserForm1.Show Unload UserForm1
Mettre..
UserForm1.load
Et de plus, tes conditions ne vont pas dans une boucle, du moins d'après ce que je peu voir au premier abord.
A+
bonnjour,
tes end if sont mal placés
If Sheets("pieces").Cells(2, NumPersonne + 4) = "N" Then UserForm1.Label1.Visible = True
Else: UserForm1.Label1.Visible = False
end if
....
tes end if sont mal placés
If Sheets("pieces").Cells(2, NumPersonne + 4) = "N" Then UserForm1.Label1.Visible = True
Else: UserForm1.Label1.Visible = False
end if
....
Bonjour
tout d'abord merci de m'avoir répondu ;) J'ai effectué les modifications comme vous me l'avez dit, cependant un problème persiste. Dans mes données les cellules contiennent bien "N" et dans l'UserForm rien ne s'affiche !! je remet mon code j'ai peut-être oublier qqch ! Merci d'avance
Sub Pieces()
NombrePersonne = ActiveWorkbook.Sheets("pieces").Range("NbPersonne").Text
If Sheets("pieces").Cells(2, NumPersonne + 5) = "N" Then
UserForm1.Label1.Visible = True
ElseIf UserForm1.Label1.Visible = False Then
If Sheets("pieces").Cells(2, NumPersonne + 6) = "N" Then
UserForm1.Label2.Visible = True
ElseIf UserForm1.Label2.Visible = False Then
If Sheets("pieces").Cells(4, NumPersonne + 7) = "N" Then
UserForm1.Label3.Visible = True
Else
UserForm1.Label3.Visible = False
End If
End If
End If
For NumPersonne = 1 To (NombrePersonne)
UserForm1.Caption = Sheets("pieces").Cells(NumPersonne + 1, 4).Value
Load UserForm1
UserForm1.Show
Next NumPersonne
Reponse = MsgBox("Voulez vous enregistrer les modifications", vbQuestion & vbYesNo, "Sauvegarde")
If Reponse = vbYes Then Application.ActiveWorkbook.Save
End Sub
tout d'abord merci de m'avoir répondu ;) J'ai effectué les modifications comme vous me l'avez dit, cependant un problème persiste. Dans mes données les cellules contiennent bien "N" et dans l'UserForm rien ne s'affiche !! je remet mon code j'ai peut-être oublier qqch ! Merci d'avance
Sub Pieces()
NombrePersonne = ActiveWorkbook.Sheets("pieces").Range("NbPersonne").Text
If Sheets("pieces").Cells(2, NumPersonne + 5) = "N" Then
UserForm1.Label1.Visible = True
ElseIf UserForm1.Label1.Visible = False Then
If Sheets("pieces").Cells(2, NumPersonne + 6) = "N" Then
UserForm1.Label2.Visible = True
ElseIf UserForm1.Label2.Visible = False Then
If Sheets("pieces").Cells(4, NumPersonne + 7) = "N" Then
UserForm1.Label3.Visible = True
Else
UserForm1.Label3.Visible = False
End If
End If
End If
For NumPersonne = 1 To (NombrePersonne)
UserForm1.Caption = Sheets("pieces").Cells(NumPersonne + 1, 4).Value
Load UserForm1
UserForm1.Show
Next NumPersonne
Reponse = MsgBox("Voulez vous enregistrer les modifications", vbQuestion & vbYesNo, "Sauvegarde")
If Reponse = vbYes Then Application.ActiveWorkbook.Save
End Sub
Re j'ai remodifier mon code ça marche presque mais j'ai encore un petit soucis dans le test avec if. J'ai trois colonnes à tester si elle contiennent "N" le label correspondant doit etre visible dans le USerForm malheureusement celà ne marche que pour ma première colonne et je ne vois pas du tt pourquoi !! merci de m'aider si vous pouvez ;).
Le code :
Sub Pieces()
Dim section
Dim Reponse
NombrePersonne = ActiveWorkbook.Sheets("pieces").Range("NbPersonne").Text
For NumPersonne = 1 To (NombrePersonne)
If Sheets("pieces").Cells(NumPersonne + 1, 6) = "N" Then
UserForm1.Label1.Visible = True
ElseIf Sheets("pieces").Cells(NumPersonne + 1, 7) = "N" Then
UserForm1.Label2.Visible = True
ElseIf Sheets("pieces").Cells(NumPersonne + 1, 8) = "N" Then
UserForm1.Label3.Visible = True
Else
End If
UserForm1.Caption = Sheets("pieces").Cells(NumPersonne + 1, 4).Value
Load UserForm1
UserForm1.Show
Next NumPersonne
Reponse = MsgBox("Voulez vous enregistrer les modifications", vbQuestion & vbYesNo, "Sauvegarde")
If Reponse = vbYes Then Application.ActiveWorkbook.Save
End Sub
Le code :
Sub Pieces()
Dim section
Dim Reponse
NombrePersonne = ActiveWorkbook.Sheets("pieces").Range("NbPersonne").Text
For NumPersonne = 1 To (NombrePersonne)
If Sheets("pieces").Cells(NumPersonne + 1, 6) = "N" Then
UserForm1.Label1.Visible = True
ElseIf Sheets("pieces").Cells(NumPersonne + 1, 7) = "N" Then
UserForm1.Label2.Visible = True
ElseIf Sheets("pieces").Cells(NumPersonne + 1, 8) = "N" Then
UserForm1.Label3.Visible = True
Else
End If
UserForm1.Caption = Sheets("pieces").Cells(NumPersonne + 1, 4).Value
Load UserForm1
UserForm1.Show
Next NumPersonne
Reponse = MsgBox("Voulez vous enregistrer les modifications", vbQuestion & vbYesNo, "Sauvegarde")
If Reponse = vbYes Then Application.ActiveWorkbook.Save
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re lol je viens de trouver la réponse !! c'était tout bête mais bon lol
Voici la solution pour ceux que ça interesse :
Sub Pieces()
Dim section
Dim Reponse
NombrePersonne = ActiveWorkbook.Sheets("pieces").Range("NbPersonne").Text
For NumPersonne = 1 To (NombrePersonne)
If Sheets("pieces").Cells(NumPersonne + 1, 6) = "N" Then
UserForm1.Label1.Visible = True
If Sheets("pieces").Cells(NumPersonne + 1, 7) = "N" Then
UserForm1.Label2.Visible = True
If Sheets("pieces").Cells(NumPersonne + 1, 8) = "N" Then
UserForm1.Label3.Visible = True
Else
End If
End If
End If
UserForm1.Caption = Sheets("pieces").Cells(NumPersonne + 1, 4).Value
Load UserForm1
UserForm1.Show
Next NumPersonne
End Sub
Voilà mais je n'aurais pas trouvé si vous n'aviez pas été là merci !! et vive les forums !!!!
Voici la solution pour ceux que ça interesse :
Sub Pieces()
Dim section
Dim Reponse
NombrePersonne = ActiveWorkbook.Sheets("pieces").Range("NbPersonne").Text
For NumPersonne = 1 To (NombrePersonne)
If Sheets("pieces").Cells(NumPersonne + 1, 6) = "N" Then
UserForm1.Label1.Visible = True
If Sheets("pieces").Cells(NumPersonne + 1, 7) = "N" Then
UserForm1.Label2.Visible = True
If Sheets("pieces").Cells(NumPersonne + 1, 8) = "N" Then
UserForm1.Label3.Visible = True
Else
End If
End If
End If
UserForm1.Caption = Sheets("pieces").Cells(NumPersonne + 1, 4).Value
Load UserForm1
UserForm1.Show
Next NumPersonne
End Sub
Voilà mais je n'aurais pas trouvé si vous n'aviez pas été là merci !! et vive les forums !!!!
Problème résolu voici la solution :
Sub Pieces()
Dim section
Dim Reponse
NombrePersonne = ActiveWorkbook.Sheets("pieces").Range("NbPersonne").Text
For NumPersonne = 1 To (NombrePersonne)
If Sheets("pieces").Cells(NumPersonne + 1, 6) = "N" Then
UserForm1.Label1.Visible = True
Else
End If
If Sheets("pieces").Cells(NumPersonne + 1, 7) = "N" Then
UserForm1.Label2.Visible = True
Else
End If
If Sheets("pieces").Cells(NumPersonne + 1, 8) = "N" Then
UserForm1.Label3.Visible = True
Else
End If
UserForm1.Caption = Sheets("pieces").Cells(NumPersonne + 1, 4).Value
Load UserForm1
UserForm1.Show
Next NumPersonne
End Sub
Merci ++
Sub Pieces()
Dim section
Dim Reponse
NombrePersonne = ActiveWorkbook.Sheets("pieces").Range("NbPersonne").Text
For NumPersonne = 1 To (NombrePersonne)
If Sheets("pieces").Cells(NumPersonne + 1, 6) = "N" Then
UserForm1.Label1.Visible = True
Else
End If
If Sheets("pieces").Cells(NumPersonne + 1, 7) = "N" Then
UserForm1.Label2.Visible = True
Else
End If
If Sheets("pieces").Cells(NumPersonne + 1, 8) = "N" Then
UserForm1.Label3.Visible = True
Else
End If
UserForm1.Caption = Sheets("pieces").Cells(NumPersonne + 1, 4).Value
Load UserForm1
UserForm1.Show
Next NumPersonne
End Sub
Merci ++
Bonsoir,
Peut-être pas genant dans ton programme mais tu ne le remets pas à false si test négatif comme montré dans l'exemple de michel.
Traiter les 2 cas de façon plus courte :
UserForm1.Label1.Visible = (Sheets("pieces").Cells(NumPersonne + 1, 6) = "N")
.Visible prendra la valeur du résultat de ton test (les if then ne sont plus nécessaires)
eric
Peut-être pas genant dans ton programme mais tu ne le remets pas à false si test négatif comme montré dans l'exemple de michel.
Traiter les 2 cas de façon plus courte :
UserForm1.Label1.Visible = (Sheets("pieces").Cells(NumPersonne + 1, 6) = "N")
.Visible prendra la valeur du résultat de ton test (les if then ne sont plus nécessaires)
eric
Voici mon code :
Sub Pieces()
Dim section
Dim Reponse
NombrePersonne = ActiveWorkbook.Sheets("pieces").Range("NbPersonne").Text
For NumPersonne = 1 To (NombrePersonne)
If Sheets("pieces").Cells(NumPersonne + 1, 6) = "N" Then
UserForm1.Label1.Visible = True
If Sheets("pieces").Cells(NumPersonne + 1, 7) = "N" Then
UserForm1.Label2.Visible = True
If Sheets("pieces").Cells(NumPersonne + 1, 8) = "N" Then
UserForm1.Label3.Visible = True
End If
End If
End If
UserForm1.Caption = Sheets("pieces").Cells(NumPersonne + 1, 4).Value
Load UserForm1
UserForm1.Show
Next NumPersonne
End Sub