IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Echec de la fonction rechercher [find] création macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2023
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2023
    Messages : 2
    Par défaut Echec de la fonction rechercher [find] création macro
    Bonjour à tous,

    Je débute avec la créations de macros et après pas mal de temps je me retrouve coincé.

    Mon objectif est de créer une macro qui permettrait à partir de la liste d'une feuille A, de rechercher la correspondance dans une colonne de la feuille B, et de copier la ligne (depuis la feuille B) de cette fameuse cellule correspondante vers une feuille C. J'ai oublié de signaler qu'il peut exister plusieurs résultats dans la feuille B mais que je peux me satisfaire de la première correspondance pour chaque recherche.

    Dans ce but j'ai réaliser le code suivant. Mon idée était de la faire tourner pour ma ligne 2 avec de l'automatiser pour la lecture automatique des lignes A, mon classeur étant "un peu" lourd.

    Mon problème est que :
    - il me sélectionne bien la cellule, en fait une copie fidèle (rapportée en "I31-Feuil3), variable : prot
    - Effectue bien la recherche dans la feuille B, mais sélectionne une ligne ne correspondant pas à la variable recherchée
    - Colle bien la ligne sélectionnée sur la feuille C.

    Mon code est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    Application.CutCopyMode = False
     
    'Nettoyage cache
     
        Dim ppapier
        Dim prot
     
    'Définition ppapier et prot comme variable
     
        prot = Sheets("Feuil3").Range("E2")
     
    'Ajout de la valeur prot
     
        If prot <> "" Then
            Sheets("GSE43580_series_matrix (2)").Activate
            With Sheets("GSE43580_series_matrix (2)")
                Range("E:E").Find What:=prot, LookAt:=xlWhole
                Application.CutCopyMode = False
                ActiveCell.EntireRow.Copy
            End With
     
            With Sheets("Resultat").Activate
                NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
                Cells(NextRow, 1).Select
                ActiveSheet.Paste
            End With
            Sheets("Feuil3").Select
     
        Else
            With Sheets("Resultat").Activate
                NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
                Cells(NextRow, 1).Select
            End With
            Sheets("Feuil3").Select
     
        End If
     
       With Sheets("Feuil3")
            .Range("I31").Value = prot
        End With
     
    End Sub
    Mes feuilles A, B et C sont respectivement : Feuil3, GSE43580_series_matrix (2) et Resultat
    Je vous aurais bien joint mon fichier, mais sa taille m'en empêche.

    Merci par avance pour votre aide

    Alex

  2. #2
    Membre habitué
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Novembre 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2018
    Messages : 15
    Par défaut
    Bonjour Alexestperdu,
    A la première lecture de ton code je note que tu fais un "ActiveCell.EntireRow.Copy" dans ton premier bloc "with".
    Je pense que ton soucis viens de là. Tu demande à Excel de copier la ligne de la cellule active. Hors à aucun moment je ne vois de sélection de la cellule ou tu as le résultat de ta variable "prot".
    Donc en gros, ton code sélectionne la ligne ou a été posé le curseur la dernière fois dans ta feuille B.

    Ci-dessous un exemple modifié de ton code pour que tu ailles sélectionner la première cellule dans laquelle se trouve la valeur "prot" dans ton onglet B colonne E

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    'Ajout de la valeur prot
     
        If prot <> "" Then
            Sheets("GSE43580_series_matrix (2)").Activate
            With Sheets("GSE43580_series_matrix (2)")
                cible = Range("E:E").Find(What:=prot, LookAt:=xlWhole, LookIn:=xlValues, MatchCase:=True).Address
                Range(cible).Activate
                Application.CutCopyMode = False
                ActiveCell.EntireRow.Copy
            End With
    En espérant avoir pu te mettre sur la bonne piste.

    Bien à toi

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2023
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2023
    Messages : 2
    Par défaut
    Merci beaucoup, en utilisant ton tips, j'avais de manière systématique une erreur.
    J'ai remplacé quelques truc et me sert de "Match" pour directement selectionner à partir du numéro de ligne. Encore merci

  4. #4
    Membre habitué
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Novembre 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2018
    Messages : 15
    Par défaut
    Citation Envoyé par Alexestperdu Voir le message
    Merci beaucoup, en utilisant ton tips, j'avais de manière systématique une erreur.
    J'ai remplacé quelques truc et me sert de "Match" pour directement selectionner à partir du numéro de ligne. Encore merci
    Content de voir que ça fonctionne.
    Bonne continuation.

    Bien à toi

Discussions similaires

  1. Fonction recherche FIND avec InputBox
    Par olivepao dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/01/2021, 19h32
  2. Fonction recherché: Find
    Par coucou1105 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 17/06/2013, 10h54
  3. Recherche la fonction équivalente à Find de VBA en VB6
    Par VBAG38 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 21/12/2012, 09h54
  4. [WD-2007] Macro Recherche et création lien Hypertexte
    Par Arthur Z dans le forum VBA Word
    Réponses: 2
    Dernier message: 07/02/2012, 08h14
  5. macro : fonction recherche
    Par M8407108 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/12/2007, 23h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo