Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Problème boucle with

  • Initiateur de la discussion Initiateur de la discussion chombriko
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

C

chombriko

Guest
Bonjour ,

J'aurai besoin d'aide.. Voilà j'ai un USF dans lequel j'ai deux boucles avec une condition qui permette pour l'une de vérifier si le texte saisi dans une combobox se trouve dans une feuille 'table adresse' , si c'est oui alors active la cellule en question, dans la deuxième boucle je fais un test pour voir si le texte entré dans la combobox ne se trouve pas dans la feuille 'table adresse' et obtient un MsgBox qui stipule que le nom recherché n'existe pas.

Je pense que j'aurai pu faire cela dans une seule boucle avec deux If imbriqué mais je n'ai pas réussi..

Donc mon problème c'est que lorsque je lance mon USF j'ai seulement la boucle pour laquelle il n'y a pas de nom trouvé qui s'active et cela même si je rentre un texte dans la combobox se trouvant bien la feuille 'table adresse'.

Voici à quoi ressemble mon code :

1er boucle :

Code:
With Worksheets("Table adresse")
 
 
               For ligne3 = 1 To 65536
 
 
         If UserForm_Nom_Client.NcRecherche = Cells(ligne3, 2) Then
Range("B" & 2 + Me.NcRecherche.ListIndex).Select
 
                              UserForm_Nom_Client.Hide
 
                             MsgBox "Nom de Client renseigné!"
 
Exit For
        End If
 
         Next ligne3
End With

2e boucle:

Code:
With Worksheets("Table adresse")
               Dim ligne7 As Long
             For ligne7 = 1 To 65536
 
 
 
          If UserForm_Nom_Client.NcRecherche <> Cells(ligne7, 2) Then
 
 
 
              MsgBox " Il n'y a pas de client avec ce nom!"
             MsgBox "Réessayer un autre nom de client"
 
                 'vide la ListBox
                UserForm_Nom_Client.NcRecherche = ""
Exit For
        End If
 
         Next ligne7
 
End With
 
Re : Problème boucle with

Bonjour

là je pars mais pour le principe : (une des solutions possibles)

trouvé=0
for i = 1 to 10000
if userform...= cells.. then
trouve = 1
msgbox ("trouvé ligne " & i)
exit for
end if
if trouve = 0 msgbox "non trouvé"
next
 
Re : Problème boucle with

bonjour,
sans fichier pour tester, pas facile d'être sur de la solution, mais bon...
essaye ça:

Code:
With Worksheets("Table adresse")
    For ligne3 = 1 To 65536
        If UserForm_Nom_Client.NcRecherche = Cells(ligne3, 2) Then
            Range("B" & 2 + Me.NcRecherche.ListIndex).Select
            UserForm_Nom_Client.Hide
            MsgBox "Nom de Client renseigné!"
            Exit For
        Else:
            MsgBox " Il n'y a pas de client avec ce nom!"
            MsgBox "Réessayer un autre nom de client"
            UserForm_Nom_Client.NcRecherche = ""
        End If
    Next ligne3
End With
à+
 
Re : Problème boucle with

Francedemo , j'ai essayé ton code mais sa ne marche pas.
Je reçois les deux MsgBox en boucle avec :
" Il n'y a pas de client avec ce nom!"
"Réessayer un autre nom de client"
 
Re : Problème boucle with

Bonjour le fil, bonjour le forum,

Quand on utilise With on met, en principe, un point devant les Cells (.Cells) ou les Range (.Range). Mais sans le fichier, difficile de savoir si ton erreur vient de la...
Je te propose ça (non testé) :
Code:
Sub Macro1()
Dim r As Range 'déclare la varialbe r (Recherche)

With Worksheets("Table adresse") 'prend en compte l'onglet "Table adresse"
    Set r = .Columns(2).Find(UserForm_Nom_Client.NcRecherche, , xlValues, xlWhole) 'définit la recherche r (recherche en colonne B...)
    If Not r Is Nothing Then 'condition : si il existe au moins une occurrence
        .Range("B" & 2 + Me.NcRecherche.ListIndex).Select 'sélectionne une cellule
        MsgBox "Nom de Client renseigné!" 'message
    Else 'sinon
        MsgBox " Il n'y a pas de client avec ce nom! Réessayer un autre nom de client." 'message
        UserForm_Nom_Client.NcRecherche = "" 'vide la ... (ComboBox ou TextBox)
    End If 'fin de la condition
End With 'fin de la prise en compte de l'onglet
End Sub
 
Re : Problème boucle with

normal, la logique n'est pas bonne !!! (dans mon code)
tu teste la première cellule, si elle ne correspond pas, tu affiches qu'il n'y a pas de client...
normal, quoi,
il faut boucler et afficher ce message après la fin de la boucle sans réponse, donc:

Code:
With Worksheets("Table adresse")
    For ligne3 = 1 To 65536
        If UserForm_Nom_Client.NcRecherche = Cells(ligne3, 2) Then
            .Range("B" & 2 + Me.NcRecherche.ListIndex).Select
            UserForm_Nom_Client.Hide
            MsgBox "Nom de Client renseigné!"
            Exit For
        End If
    Next ligne3
    If ligne3 = 65356 then
            MsgBox " Il n'y a pas de client avec ce nom!"
            MsgBox "Réessayer un autre nom de client"
            UserForm_Nom_Client.NcRecherche = ""
    end If
End With

à tester...

nota: bien vu Robert pour le point ... et bonjour
 
Re : Problème boucle with

Re ,

J'obtiens une erreur cette fois si ! Erreur : variable objet ou variable de bloc non définie.
Sur la ligne suivante :
Code:
var_nom_client = Feuil4.Columns(2).Cells.Find(What:=stringChaine, LookAt:=xlWhole)

à noter que var_nom_client est déclarée de la façon suivante :

Code:
dim var_nom_client as string

si je la déclare en range , je reçois une erreur dans la suite de mon code mais plus sur cette ligne , le problème c'est que j'ai comme contrainte de laisser var_nom_client déclaré en tant que string.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
15
Affichages
784
Réponses
9
Affichages
385
Réponses
7
Affichages
454
Réponses
5
Affichages
910
Réponses
4
Affichages
733
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…