VBA Excel : Problème de selection de ligne pour des copier/coller

jimmy SICG

XLDnaute Nouveau
Bonjour à tous,

Alors voila le plus dur est qu'il faut que je réussisse à bien vous expliquer le problème que je rencontre. ;-)

J'ai une feuille excel ("donnees") où sont notés des informations sur les villes ainsi que d'autres informations sur les colonnes suivantes qui me sont également utiles.

Exemple :

Col B
lign 1 melun
lign 2 chavagnes
lign 3 melun
lign 4 melun

J'aimerai que ma programmation arrive à trouver les cellules où il y a le mot "melun", qu'elle copie la ligne entière où se situe la cellule avec le mot "melun" et qu'ensuite elle colle ces fameuses lignes dans une autre feuille (appelée "X").

Pour information, le résultat de ma programmation est qu'elle copie et colle toutes les lignes même si il n'y a pas de cellule contenant le mot "melun". Cependant elle le fait au bon endroit :)

Mon code :

Dim rngTrouve As Range
Dim strChaine As String
Dim cpt As Integer
cpt = 1

Nb_lignes = Cells(Cells.Rows.Count, "B").End(xlUp).Row

strChaine = InputBox("Chaîne à rechercher :")

For i = 1 To Nb_lignes

Sheets("Donnees").Select
Set rngTrouve = ActiveSheet.Range("B2:B" & Nb_lignes).Cells.Find(what:=strChaine)

If rngTrouve Is Nothing Then
MsgBox "Pas trouvé"
Else
Worksheets("Donnees").Cells(i, 2).EntireRow.Copy
Sheets("X").Select
Cells(cpt, 1).Select
ActiveSheet.Paste
cpt = cpt + 1
End If

Set rngTrouve = Nothing

Next


Voila merci d'avance pour votre aide précieuse. Cela fait maintenant deux jours que je planche sur le sujet !!!
Bonne journée
 

Odesta

XLDnaute Impliqué
Re : VBA Excel : Problème de selection de ligne pour des copier/coller

Bonjour et bienvenue sur le forum

Pourquoi ne pas se simplifier la vie en comparant le contenue de la cellule scannée plutot que de faire une recherche ?
Code:
strChaine = InputBox("Chaîne à rechercher :")

Sheets("Donnees").Select
Set rngTrouve = ActiveSheet.Range("B2:B" & Nb_lignes).Cells.Find(what:=strChaine)
If rngTrouve Is Nothing Then
MsgBox "Pas trouvé"
Else



For i = 1 To Nb_lignes

If strChaine = Worksheets("Donnees").Cells(i,2).value Then

Worksheets("Donnees").Cells(i, 2).EntireRow.Copy
Sheets("X").Select
Cells(cpt, 1).Select
ActiveSheet.Paste
cpt = cpt + 1
End If

Set rngTrouve = Nothing

Next

end if

cdt
Olivier
 

jimmy SICG

XLDnaute Nouveau
Re : VBA Excel : Problème de selection de ligne pour des copier/coller

Bonjour Olivier,

Merci pour le code il fonctionne très bien. Cependant j'ai oublié de préciser que dans mon fichier où je compte inclure cette macro, les noms de ville seront suivis de quleques informations du type :

melun_PBh_2012

et là lorsque je teste ta macro, elle ne me remonte plus les données. Est ce que tu connais le moyen pr remédier à ce problème? C'est à dire où la macro rechercherai le mot "melun" dans une cellule où il y a plusieurs mots associé à cette ville.

Merci de ton aide

Jimmy
 

jimmy SICG

XLDnaute Nouveau
Re : VBA Excel : Problème de selection de ligne pour des copier/coller

Info complémentaire : le nom de la ville est toujours le premier mot dans la cellule
exemple :
melun_PBH_2012
locmine_PBH_JNL_2012

Donc je pensais à utiliser le symbole "*" dans mon code mais ça ne fonctionne pas
 
Dernière édition:

Odesta

XLDnaute Impliqué
Re : VBA Excel : Problème de selection de ligne pour des copier/coller

Bonjour
En récupérant uniquement la "gauche" de la cellule, en se basant sur la taille de la chaine strChaine
Code:
If strChaine = left(Worksheets("Donnees").Cells(i,2).value,len(strchaine)) Then

Est-ce que cela fonctionne ?


Cdt

olivier
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 836
Messages
2 092 652
Membres
105 479
dernier inscrit
chaussadas.renaud