Problème avec boucle VBA

Bonjour,

Lors de l'execution d'une macro en boucle dans mon userform, je ne parviens pas a obtenir le résultat voulu. J'ai une liste de prénom en A, une liste de nom en B. Dans mon userform , je selectionne nom et prénom. ensuite une macro s'execute pour touver les valeures correspondant a cette personne. Mais la boucle afficche toujour le même commentaire

For essai = 6 To Range("B65536").End(xlUp).Row
For j = 1 To 5

       If Cells(essai, "B").Offset(j - 1, 0) Like NomSTCom And Cells(essai, "A").Offset(j - 1, 0) = LotSTCom Then
       Me.Controls("Textbox" & j) = .Cells(essai, "C").Offset(j - 1, 0)
       Me.Controls("Textbox" & 5 + j) = .Cells(essai, "D").Offset(j - 1, 0)
    End If

Next j
Next essai

Merci de votre aide

vinny

Bonjour,

Il faudrait que tu nous dise quel résultat tu souhaite avoir ? Tu as 5 TextBox pour des essais positifs et 5 pour des essais négatifs alors qu'il n'y a qu'une réponse de chaque pour le nom et prénom correspondant ?

Hervé.

Non il peux y avoir jusqu'a 10 (=2*5) réponse de chaque pour le nom et prénom.

Dans mes text box 1 et 6 je souhaite avoir les résultats de la 1er ligne correspondant.

Dans mes text box 2 et 7 je souhaite avoir les résultats de la 2er ligne correspondant....

Je pense déja que le code suivant est plus cohérent (inversement des boubles J et essai)

For j = 1 To 5
For essai = 6 To Range("B65536").End(xlUp).Row

       If Cells(essai, "B").Offset(j - 1, 0) Like NomSTCom And Cells(essai, "A").Offset(j - 1, 0) = LotSTCom Then
       Me.Controls("Textbox" & j) = .Cells(essai, "C").Offset(j - 1, 0)
       Me.Controls("Textbox" & 5 + j) = .Cells(essai, "D").Offset(j - 1, 0)
    End If

   Next essai 
Next j

vinny

Bonjour

J'avais "bricolé" un peu ton fichier sur l'autre post

https://forum.excel-pratique.com/excel/incompatibilite-de-type-t25796.html

A essayer

J'ai un problème en adaptant a mon fichier.

Les text box sont de 5 a 14 (5->9 positif, 10->14 négatif) et les combobox sont 1 et 3

Private Sub Image6_Click()
'Afficher commentaires
Dim Num As Byte
Dim Z As Long

  If Me.ComboBox1.ListIndex = -1 Then Exit Sub

  For Num = 5 To 14
    Me.Controls("Textbox" & Num) = ""
  Next Num

  Num = 5
  With Sheets("Commentaires")
    For Z = 9 To .Range("B65536").End(xlUp).Row
      If .Cells(Z, "B") Like ComboBox1 And Cells(Z, "A") = ComboBox3 Then
        Me.Controls("TextBox" & Num) = .Cells(Z, "C")
        Me.Controls("TextBox" & 5 + Num) = .Cells(Z, "D")
        Num = Num + 1
        If Num = 10 Then Exit Sub
      End If
    Next Z
  End With

End Sub

merci de me dire ou est l'erreur si vous la voyez

Bonjour

sans connaitre ton fichier ni ton nouveau Userform

Il faudrait dire ce qui ne passe pas

A première vue il n'y a pas de problème a part le . (point) devant

If .Cells(Z, "B") Like ComboBox1 And.Cells(Z, "A") = ComboBox3 Then

Expliques un peu mieux ton problème et joins ton fichier anonymisé

Merci c'était le point! il en faut vraiment peu pour que ca bloque!


En faite il y a quand meme un dernier problème.

Avant il etait pssible d'ajouter un prénom(qui n'est pas dans la liste), j'ai un peux de mal avec le code que vous avez corriger.

avant quand j'ajoutait un prénom, celui ci s'ajoutait en bas des commentaires

avant :

  NomSTCom = Me.ComboBox1.Value
  With Sheets("Commentaires")
  Lg = .Range("B" & Rows.Count).End(xlUp).Row + 1                             ' 1ère ligne vide
    Set Com = .Columns(2).Find(NomSTCom, LookIn:=xlValues, LookAt:=xlWhole)
    If Not Com Is Nothing Then
      'premier commentaire positif sur le sous traitant selectionnée dans la liste
      .Cells(Com.Row, "A") = ComboBox3
      .Cells(Com.Row, "C") = TextBox5
      .Cells(Com.Row, "D") = TextBox10

      'deuxième commentaire positif sur le sous traitant selectionnée dans la liste
      If .Range("B" & Com.Row).Offset(1, 0) = NomSTCom Then
        .Cells(Com.Row, "A").Offset(1, 0) = ComboBox3
        .Cells(Com.Row, "C").Offset(1, 0) = TextBox6
        .Cells(Com.Row, "D").Offset(1, 0) = TextBox11
        Else
        If Me.TextBox6 <> "" Or Me.TextBox11 <> "" Then
          .Cells(Lg, "A") = ComboBox3
          .Cells(Lg, "B") = NomSTCom
          .Cells(Lg, "C") = TextBox6
          .Cells(Lg, "D") = TextBox11
          Lg = Lg + 1
        End If
      End If

maintenant :

  With Sheets("Commentaires")
    LgDer = .Range("B" & Rows.Count).End(xlUp).Row                            ' Dernière ligne
    For J = 9 To LgDer
      If .Cells(J, "B") Like NomSTCom And .Cells(J, "A") = LotSTCom Then
        ' Trouvé la ligne
        Lg = J
        For K = 5 To 9
          If Me.Controls("TextBox" & K) <> "" Or Me.Controls("TextBox" & 5 + K) <> "" Then
            If Not (.Cells(Lg, "B") Like NomSTCom) Or .Cells(Lg, "A") <> LotSTCom Then
              Lg = LgDer + 1
              LgDer = LgDer + 1
            End If
            .Cells(Lg, "A") = LotSTCom
            .Cells(Lg, "B") = NomSTCom
            .Cells(Lg, "C") = Me.Controls("TextBox" & K)
            .Cells(Lg, "D") = Me.Controls("TextBox" & 5 + K)
            Lg = Lg + 1
          End If
        Next K
        Exit For

        'else en bas nouveau st/lot

      End If
    Next J

merci d'vances pour vos explications

Rechercher des sujets similaires à "probleme boucle vba"