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.
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
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.
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
Dernière édition: