Copier les lignes suivant deux conditions
Bonjour à tous,
Etant débutant dans la programmation VBA, j'aimerais vous demander quelques conseils.
Dans un fichier Excel, j'aimerais copié une ligne en vérifiant 2 conditions :
Tout d'abord j'ai mis en place une InputBox qui demande la première condition à vérifier, le nom d'une entreprise dans mon exemple.
1) J'aimerais que dans une colonne précise, la macro vérifie si le résultat de mon input box est affiché dans une cellule
Si non passer à la ligne suivante
2) Si la cellule contient le résultat alors vérifier que dans une autre colonne mais toujours sur la même ligne, la cellule est égale à "Oui"
Si non passer à la ligne suivante tant qu'elle n'est pas vide
Je vous joins un fichier explicatif ou la première condition est de vérifier dans la colonne F si le nom de l'entreprise est Hertz, puis de
vérifier si dans la colonne E si sur la meme ligne il ya bien marquer "Oui".
En feuille 2 le résultat souhaitée de la macro...
J’espère avoir été clair dans mes explications, le but étant que je comprenne si vous pouvez m'expliquer à l'aide d'un support, je suis preneur, apres j'ai vraiment de maigres connaissances en VBA mais une grande soif d'apprendre !
Merci pour votre aide !
Cordialement,
Guillaume NORMAND
Bonjour Guiguii91,
Un essai:
Sub transfert()
Dim derCellColF As Long 'derniere cellule feuille de départ colonne F
Dim i As Long
Dim resultat As String
resultat = InputBox("Veuillez renseigner le loueur que vous souhaitez extraire", "Titre") 'choisir le loueur
derCellColF = Sheets("Feuil1").Range("F65535").End(xlUp).Row + 1 'dernière cellule de la colonne F
For i = 2 To derCellColF 'on boucle de la ligne 2 à la dernière ligne remplie
With Sheets("Feuil1")
If .Cells(i, 6).Text = resultat And .Cells(i, 5).Text = "OUI" Then
.Cells(i, 6).EntireRow.Copy _
Destination:=Sheets("Feuil2").Range("a65535").End(xlUp).Offset(1, 0) 'on écrit sur la première ligne vide de la feuille 2
End If
End With
Next i
End Sub
cordialement,
Re,
Petite correction, on efface les données de la feuille 2 puis on écrit, de façon à n'avoir que le résultat de la recherche....
Sub transfert()
Dim derCellColF As Long 'derniere cellule feuille de départ colonne F
Dim i As Long, j As Long
Dim resultat As String
resultat = InputBox("Veuillez renseigner le loueur que vous souhaitez extraire", "Titre") 'choisir le loueur
derCellColF = Range("F65535").End(xlUp).Row + 1 'dernière cellule de la colonne F
For i = 2 To derCellColF 'on boucle de la ligne 2 à la dernière ligne remplie
With Sheets("Feuil2")
For j = 2 To derCellColF
Sheets("Feuil2").Range("A" & i & ":F" & i).ClearContents 'on efface les données
Next j
End With
With Sheets("Feuil1")
If .Cells(i, 6).Text = resultat And .Cells(i, 5).Text = "OUI" Then
.Cells(i, 6).EntireRow.Copy _
Destination:=Sheets("Feuil2").Range("a65535").End(xlUp).Offset(1, 0) 'on écrit sur la première ligne vide de la feuille 2
End If
End With
Next i
End Sub