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

Problèmes boucle for next

  • Initiateur de la discussion Initiateur de la discussion jibs
  • 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 !

jibs

XLDnaute Nouveau
Bonjour,
je viens vers ce forum pour tenter de résoudre un problème de code que j'ai.
Mon but est de copier une ligne d'une base de données (la selection se fait via une list box dans un userform) présente sur une feuille excel vers une autre feuille excel. Ceici tout en mettant à jour une list bos que j'ai dans un userform et qui me montre les lignes qui ont été tranférés... De plus, je dois vérifier que je ne crée pas de doublons. Donc j'effectue plusieur test:

- for pour parcourir toutes les lignes de la list box et donc de la base de données source
- if pour tester quelles sont les lignes selectionnées
- for pour parcourir la base de donnée cible
- if pour controler les doublons
-if vbYesno pour permettre à l'utilisateur de choisir si ou ou non il rajoute la ligne


une ligne doit etre ajoutée : si ellle a été selectionnée, s'il n'y a pas de doublon ou que l'utilisateur a forcé la saisie
une ligne ne doit pas etre rajoutée si : elle n'a pas ete selectionne , s'il y a un doublon et que l'utilisateur n'a pas forcé la saisie.

Voici le code ci-dessous. L'exemple est en pièce jointe.
Merci pour votre aide !!!



Private Sub CommandButton8_Click()
Dim j As Integer
Dim k As Integer
Dim l As Integer
Dim numero As Integer
Dim ligne As Integer


For i = 0 To ListBox4.ListCount - 1
If ListBox4.Selected(i) = True Then

For k = 1 To [nombre_charges]
If Sheets(2).Cells(ListBox4.List(i, 0) + 1, 4) = Sheets(4).Cells(k, 4) Then

If MsgBox(Sheets(2).Cells(ListBox4.List(i, 0) + 1, 4) & " : " & "Déjà présente. Etes-vous sûr de vouloir l'ajouter une nouvelle fois?", vbYesNo + vbExclamation, "Avertissement") = vbYes Then

Exit For
End If

End If

Next

With Feuil2
.Rows(ListBox4.List(i, 0) + 1).Copy
End With
With Feuil4
.Rows(1).Insert Shift:=xlDown
End With

End If

Next i

For i = 0 To ListBox4.ListCount - 1 'décoche toutes les cases
'sélection de l'item
ListBox4.Selected(i) = False
Next i

ListBox3.Clear

With Feuil4
numero = 1
For j = 1 To [nombre_charges]
.Cells(j, 1) = numero
numero = numero + 1
ListBox3.AddItem (.Cells(j, 4).Value)
Next
End With


MsgBox ("Ces lignes ont bien été ajoutées")
End Sub
 

Pièces jointes

Re : Problèmes boucle for next

Salut,



si j'ai bien compris un booléen devrait faire l'affaire

si case à cocher boule = true
si reponse à question est non = false

on écrira que si il est à true:

voilà ce deviendrait ton code :

Code:
Private Sub CommandButton1_Click()
Dim j As Integer
Dim k As Integer
Dim l As Integer
Dim numero As Integer
Dim ligne As Integer
dim Boule as boolean
'lig = val(ListBox4.List(ListBox4.ListIndex, 1))

For i = 0 To ListBox1.ListCount - 1
  If ListBox1.Selected(i) = True Then
    boule = True
    For k = 1 To [nombre_charges]
    If Sheets(4).Cells(ListBox1.List(i, 0), 3) = Sheets(5).Cells(k, 3) Then
      If MsgBox(Sheets(4).Cells(ListBox1.List(i, 0), 3) & " : " & "Cette charge est déjà présente. Etes-vous sûr de vouloir l'ajouter une nouvelle fois?", vbYesNo + vbExclamation, "Avertissement") = vbNo Then
        boule = False
        Exit For
      End If     'if VBYN
    End If      'if doublon

    Next k
  If boule Then
    With Feuil4
      .Rows(ListBox1.List(i, 0)).Copy
    End With
    With Feuil5
      .Rows(1).Insert Shift:=xlDown
    End With
    MsgBox ("Ces charges ont bien été ajoutées au BILAN")
  End If
    End If     'if coché
  Next i

For i = 0 To ListBox1.ListCount - 1     'décoche toutes les cases
        'sélection de l'item
        ListBox1.Selected(i) = False
    Next i
    
    ListBox2.Clear
    
    With Feuil5
    numero = 1
        For j = 1 To [nombre_charges]
        .Cells(j, 1) = numero
        numero = numero + 1
        ListBox2.AddItem (.Cells(j, 3).Value)
        Next
    End With

'ListBox3.List() = [nom].Value
End Sub


NB la prochaine fois , pour rendre la lecture du code plus facile UTILSEZ la tabulation .
 
Re : Problèmes boucle for next

Merci beaucoup pour votre réponse!
J'avais testé un autre code en utilisant un booleen mais j'avais toujours un problème.
En tout cas merci beaucoup ! cela m'a beaucoup aidé !
 
- 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

Discussions similaires

Réponses
5
Affichages
707
Réponses
4
Affichages
581
Réponses
10
Affichages
533
Réponses
8
Affichages
270
Réponses
2
Affichages
185
  • Question Question
Microsoft 365 Erreur UBound
Réponses
4
Affichages
217
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…