VBA problème fonction for et if
Fermé
vans7k
-
29 juin 2010 à 14:15
eriiic Messages postés 24597 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 22 septembre 2024 - 29 juin 2010 à 23:10
eriiic Messages postés 24597 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 22 septembre 2024 - 29 juin 2010 à 23:10
A voir également:
- VBA problème fonction for et if
- Fonction si et - Guide
- Downloader for pc - Télécharger - Téléchargement & Transfert
- Fonction somme excel - Guide
- Copytrans heic for windows - Télécharger - Visionnage & Diaporama
- Download instagram for pc - Télécharger - Divers Communication
6 réponses
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
29 juin 2010 à 14:27
29 juin 2010 à 14:27
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+
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 306
29 juin 2010 à 14:28
29 juin 2010 à 14:28
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 ++
eriiic
Messages postés
24597
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
22 septembre 2024
7 235
29 juin 2010 à 23:10
29 juin 2010 à 23:10
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
29 juin 2010 à 15:46
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