Problème boucle with

chombriko

XLDnaute Junior
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
 

ERIC S

XLDnaute Barbatruc
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
 

francedemo

XLDnaute Occasionnel
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
à+
 

Robert

XLDnaute Barbatruc
Repose en paix
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
 

francedemo

XLDnaute Occasionnel
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
 

chombriko

XLDnaute Junior
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.
 

Statistiques des forums

Discussions
312 500
Messages
2 089 004
Membres
104 003
dernier inscrit
adyady__