Selection d'une ligne

Bonjour à tous,

Je suis coincé sur un petit bout de code chargé de me selectionner une ligne dès la valeur trouvée.

Mais le soucis, c'est que je ne sais comment utiliser le resultat de la variable pour la selection de la ligne.

Ma 1ere partie me permet de trouver la valeur recherchée et je stock l'adresse $A$2 par exemple.

comment exploiter cette valeur pour selectionner la ligne?

Merci à vous pour votre aide.

Voici la copie du code:

Sub Cherche()
'déclaration des variables :
Dim Trouve As Range, PlageDeRecherche As Range
Dim Valeur_Cherchee As String, AdresseTrouvee As String
Dim Number As Long

            ActiveSheet.Name = "Compare N à M"
            MonFichier = ActiveWorkbook.Name

            'Récupération de la dernière ligne de COMP N
             LastLigneCompare = WorksheetFunction.CountA(Range("A:A"))

            For Z = 2 To LastLigneCompare

            'Valeur des variables
            Number3E = Cells(Z, 1).Value

             Application.ScreenUpdating = False

             Sheets("COMP N").Select

                            Valeur_Cherchee = Number3E
                                'dans la première colonne de la feuille active
                            Set PlageDeRecherche = ActiveSheet.Columns(1)

                            'recherche la valeur
                            Set Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, LookAt:=xlWhole)

                            'traitement de l'erreur possible : Si on ne trouve rien :
                            If Trouve Is Nothing Then
                                'ici, traitement pour le cas où la valeur n'est pas trouvée
                                AdresseTrouvee = Valeur_Cherchee & " n'est pas présent dans " & PlageDeRecherche.Address
                            Else
                                'ici, traitement pour le cas où la valeur est trouvée
                                AdresseTrouvee = Trouve.Address
                            End If

                            '[color=#FF0000]Ici devrait se trouver le code pour selectionner ma ligne et la copîer sur la feuille COMP M[/color]
                            'vidage des variables
                            Set PlageDeRecherche = Nothing
                            Set Trouve = Nothing

                Z = Z + 1
                Next

End Sub

Bonjour,

Si tu commençais par mettre ton code sous balise Code, qu'on puisse le lire correctement, en supprimer les lignes vides à l'intérieur (qui l'allonge démesurément et oblige à scroller inutilement !) et l'indenter (pour une lecture plus rapide)...

Ensuite cesser d'être sélectmaniaque car on n'a jamais besoin de sélectionner un objet pour le manipuler ou le modifier, au cas particulier, sélectionner une plage pour reproduire ses valeurs ailleurs ne présente aucun intérêt et est juste une perte de temps !

On pourra examiner alors ton code et en rectifier les anomalies : par exemple boucle For... Next utilisant Z et dans laquelle tu incrémentes encore Z, juste la bonne façon pour sauter une ligne sur deux..., pas la seule certainement, mais je l'ai vue sans lire !

Enfin tu peux attendre que quelqu'un pourvu d'un esprit de sacrifice dont je ne dispose pas lise ton code pour l'arranger...

Cordialement.

Merci pour tes conseils.

Aprés, je suis complètement autodidacte sur ce genre de chose, donc suis preneur de toute bonne info

Pour le Z c'est effectivement le but rechercher

bonjour,

Une solution sans Select :

'ici, traitement pour le cas où la valeur est trouvée
LigneTrouvee = Trouve.Row
Rows(LigneTrouvee).Copy  Sheets("COMP N").Rows(4) '(à ajuster)

A+

Tu vas poursuivre en explicitant ce que tu fais, car tu jongles avec 3 feuilles sans qualifier tes expressions (le résultat risque de ne pas être le bon !), tu déclares des variables mais en utilises non déclarées, dont certaines sans utilité...

On a 3 feuilles : Compare N à M, REPORT N, COMP N

Confirmer qu'elles sont dans le même classeur, car on arrive à douter !

Et indiquer ce que tu fais avec ! Où tu prends, pour mettre où !

Combien de colonnes utilisées dans ces feuilles.

Ce code fait parti d'une macro qui compare dans un même classeur excel, 2 feuilles "COMP M" et "COMP N".

Sur la feuille "COMPARE M à N", je colle la ligne pour chaque références d'article (colonne A) et ses "attributs" (210 colonnes)

Quand j'ai retourné l'ensemble des références de "COMP M" ayant un attribut différent par rapport à ceux de la feuille "COMP N", je mets en rouge la ou les cellules qui sont différentes.

Quand j'obtiens ma liste de références (colonne A), je souhaite :

1) récupérer la référence en A1

2) la rechercher dans la feuille "COMP N" et lorsque celle-ci est repérée

3) copier la ligne entière et l'insérer sous la référence de la feuille "COMPARE M à N" donc en A(2).

Et ainsi de suite sur la liste des références.

J'espère être clair.

Merci à toi

PS : Normal pour les variables, je suis sur un module de test donc je n'ai pas pris le temps de tout déclarer.

Je ne vois que ce que tu montres... et comme tu réponds de façon lacunaire, cela ne peut beaucoup avancer...

Tu démarre sur Compare N à M qui est la feuille active que tu renommes ainsi (on ne sait ce qui s'est passée avant, si cette feuille était là, si elle vient d'être ajoutée... )

Tu fais un crochet pour donner le nom de ton classeur actif à la variable MonFichier, non déclarée. Détour inutile,car tu ne t'en sers pas, et ne travaillant que sur un seul classeur tu avais ThisWorkbook pour le cibler si besoin...

Tu affectes à LastLigneCompare (variable anglo-française ! mais encore non déclarée), le nombre de valeurs de la plage A:A (non qualifiée, je préfèrerais qualifiée !) avec la fonction de feuille de calcul NBVAL... Je n'aime pas trop la méthode pour définir la dernière ligne, mais il en ressort que Compare N à M a un contenu supérieur à une ligne et sans vide intercalaire en colonne A.

On boucle sur cette feuille à partir de la ligne 2, en colonne A, variable de contrôle Z... On affecte la valeur de la cellule parcourue (on commence par A2 donc) à la variable Number3E (encore une variable non déclarée ; et Cells n'est pas qualifiée... un bloc With aurait permis à la fois de qualifier et d'avoir un code plus efficace).

On va réaffecter ensuite cette dernière variable à Valeur_Cherchee (déclarée elle !) : détour inutile, on pouvait l'affecter directement et économiser la variable précédente.

Mais on est passé sur COMP N par sélection et on affecte la colonne A de la feuille à la variable PlageDeRecherche : on pouvait faire sans Select et en une ligne...

On cherche avec Find dans la plage en affectant le résultat à une variable Trouve (type Range). On teste Trouve (OK) : message si vide, adresse de la cellule si trouvée.

C'est là que tu veux récupérer la ligne pour l'affecter... Mais combien de colonnes ? L'affecter où ? On n'a que deux feuilles en présence : une dans laquelle on prélève une valeur à chercher dans la seconde. On prélève la ligne, pour l'affecter dans COMP M dont on ne sait si elle a un contenu ou non...

Tu vides tes variables objet utilisées pour la recherche, ce qui n'a pas une utilité patente... et tu incrémentes Z, soit après A2 tu vas passer à A4, puis A6, etc. dans ta boucle !

Avec ça, je ne sais pas faire un code rationnel !

Rechercher des sujets similaires à "selection ligne"