Problèmes boucle for next

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

  • Alimenter Listbox.xls
    100 KB · Affichages: 42
  • Alimenter Listbox.xls
    100 KB · Affichages: 37
  • Alimenter Listbox.xls
    100 KB · Affichages: 38

Zon

XLDnaute Impliqué
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 .
 

Discussions similaires

Statistiques des forums

Discussions
312 764
Messages
2 091 867
Membres
105 084
dernier inscrit
lca.pertus