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 :

MACRO pour RECHERCHEV


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Responsable Commercial
    Inscrit en
    Mars 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Responsable Commercial
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 51
    Par défaut MACRO pour RECHERCHEV
    Bonjour,

    Je dois effectuer des RECHERCHEV sur plusieurs colonnes. J'ai un très grand tableau, que je suis amené à mettre à jour régulièrement. Je souhaite donc automatiser la RECHERCHEV par une macro.
    En détail :
    Un seul classeur avec plusieurs feuilles, dont "SOURCE" et "DESTINATION". Si je trouve dans la colonne A (de A3 à A2000) de ma feuille "SOURCE", la valeur de la colonne A (de A3 à A2000) de ma feuille "DESTINATION", alors je dois copier la valeur des colonnes qui vont de AR à DD (de la ligne 3 à la ligne 2000) de ma feuille "SOURCE" dans les colonnes AR à DD (de la ligne 3 à la ligne 2000) de ma feuille "DESTINATION".
    Toutes les cellules de la plage AR3 : DD2000 ne contiennent pas de valeurs. Aussi, quand il n'y a aucune valeur, je souhaite éviter les valeurs N/A et autres.

    J'ai bien trouvé quelques exemples de codes ici et là, mais rien qui soit bien adapté à mon cas.
    Faut-il que j'inscrive ce code dans ma feuille (et quelle feuille?) ou alors dans un module?

    Pouvez-vous m'aider SVP, je débute en VBA.
    Merci d'avance.
    Cordialement.

  2. #2
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Bonjour janigrel,

    Je n'ai compris ton problème qu'en partie.
    Peux-tu, s'il te plait, envoyer à la communauté un fichier exemple permettant de mieux comprendre ton problème ?

    Autrement, si je résume, est-ce que ton problème revient à ceci :
    Boucler sur l'ensemble des cellules A3-A2000 de la feuille "DESTINATION".
    Si une correspondance est faite avec la feuille "SOURCE" alors copier l'ensemble des valeurs de la ligne X de AR à DD.
    Si aucune valeur n'est présente sur cette plage, alors insérer ne rien insérer.

    Est-ce cela ?

    Cordialement,
    Kimy

    Voici quelque chose de rapide que je te propose :
    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
    Sub rechercheV()
    Dim cell_sour As Range
    Dim cell_dest As Range
     
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
     
    With Worksheets("DESTINATION")
     
    Set cell_dest = .Range("A1")
    For i = 0 To .Columns(1).Find("*", , , , , xlPrevious).Row - 1
        Set cell_sour = Worksheets("SOURCE").Columns(1).Find(cell_dest.Offset(i, 0), LookIn:=xlValues, LookAt:=xlWhole)
        If Not cell_sour Is Nothing Then
            'Colonne AR à DD
            For j = 43 To 107
                cell_dest.Offset(i, j) = cell_sour.Offset(0, j)
            Next j
        End If
    Next i
     
    End With
     
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
     
    End Sub
    Dis-moi si cela te convient.
    A adapter si cela ne répond pas exactement à tes attentes.

    Cordialement,
    Kimy

  3. #3
    Membre averti
    Homme Profil pro
    Responsable Commercial
    Inscrit en
    Mars 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Responsable Commercial
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 51
    Par défaut
    Salut Kimy,

    C'est exactement ce que je cherchais à faire. C'est impeccable! Merci beaucoup! Je vais garder précieusement ce code pour d'autres applications (RechercheV)...
    J'ai un autre problème suite au report des valeurs dans ma plage AR3 : DD2000.
    Dans ma base "SOURCE", en fonction des valeurs inscrites dans certaines cellules de la plage AR3 : DD2000, j'avais introduit un code dans la feuille pour colorer les lignes en fonction de ces valeurs.
    Ci-joint le code :

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r As Integer, c As Integer
    Dim ArrWd
     
     r = Target.Row
    Range("a" & r & ":dd" & r).Interior.ColorIndex = -4142 'couleur automatique
     
     ArrWd = Split("REFUS CAT, CLIENT/PROSPECT INTERNE, SANS AUTO", ", ")
        For i = 0 To UBound(ArrWd)
            For c = 44 To 104 Step 5
                If Cells(r, c) = ArrWd(i) Then
                Range("a" & r & ":dd" & r).Interior.ColorIndex = 3 'rouge
                Exit For
                End If
            Next c
        Next i
     
     For c = 45 To 105 Step 5
        If c = 50 Then c = 55 ' ne manque t-il pas la col 50 dans votre code.
            If Cells(r, c) = "OUI" Then
            Range("a" & r & ":dd" & r).Interior.ColorIndex = 40 'orange
            Exit For
            End If
     Next c
     
      For c = 48 To 108 Step 5
        If c = 50 Then c = 55
            If Cells(r, c) = "RDV" Then
            Range("a" & r & ":dd" & r).Interior.ColorIndex = 4 'vert
            Exit For
            End If
      Next c
     
      End Sub
    Après avoir exécuté ta macro qui a reporté les valeurs de "SOURCE" dans "DESTINATION", j'ai inséré dans ma page "DESTINATION" le code pour colorer les lignes (dans la feuille et non dans un nouveau module) : le problème est que ce code ne colore pas les lignes comme dans ma feuille "SOURCE".
    Sais-tu d'où vient le problème et comment le corriger?

    PS : je ne peux joindre le fichier Excel car il contient malheureusement des informations soumises au secret professionnel.
    Cordialement.

  4. #4
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Bonjour janigrel,

    Une piste peut-être :
    Pour accélérer la vitesse d’exécution de ma macro j'ai désactivé temporairement les calculs automatiques, ne sachant pas s'il y en avait.
    Pour cela, je te propose donc de supprimer les lignes suivantes et de refaire ton test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Application.Calculation = xlCalculationManual
    '...
    Application.Calculation = xlCalculationAutomatic
    J'attends ton retour.

    Cordialement,
    Kimy

  5. #5
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour,

    vu le code, ce serait plutôt utile de désactiver l'affichage, consulter l'aide de la propriété ScreenUpdating

  6. #6
    Membre averti
    Homme Profil pro
    Responsable Commercial
    Inscrit en
    Mars 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Responsable Commercial
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 51
    Par défaut
    Kimy, tout est OK comme ça, ça fonctionne impeccable !
    Merci encore.
    Cordialement.

  7. #7
    Membre averti
    Homme Profil pro
    Responsable Commercial
    Inscrit en
    Mars 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Responsable Commercial
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 51
    Par défaut
    Bonjour Marc-L
    J'ai effectivement désactivé l'affichage.
    Merci des conseils ! Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Macro pour "modifier" la fonction RechercheV
    Par Dragoon51Fly dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/03/2015, 10h04
  2. [XL-2010] MACRO pour RECHERCHEV
    Par janigrel dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/03/2014, 20h49
  3. [XL-2007] Macro pour recherchev
    Par Fred4345 dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 18/10/2011, 22h39
  4. macro pour splashscreen
    Par stoads dans le forum IHM
    Réponses: 20
    Dernier message: 26/11/2005, 12h33
  5. [VBA-E] [help]macro pour dupliquer une feuille (en valeur)
    Par minikisskool dans le forum Macros et VBA Excel
    Réponses: 31
    Dernier message: 07/11/2005, 19h24

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