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
    Nouveau membre du Club
    Homme Profil pro
    Responsable Commercial
    Inscrit en
    Mars 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Responsable Commercial
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 51
    Points : 30
    Points
    30
    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 émérite
    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
    Points : 2 657
    Points
    2 657
    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
    La logique :
    • Plus ya de gruyère, moins ya de gruyère.
    • Plus tu pédales moins vite, moins tu avances plus vite.
    Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Responsable Commercial
    Inscrit en
    Mars 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Responsable Commercial
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 51
    Points : 30
    Points
    30
    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 émérite
    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
    Points : 2 657
    Points
    2 657
    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
    La logique :
    • Plus ya de gruyère, moins ya de gruyère.
    • Plus tu pédales moins vite, moins tu avances plus vite.
    Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !

  5. #5
    Expert éminent sénior
    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
    Points : 18 677
    Points
    18 677
    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
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Responsable Commercial
    Inscrit en
    Mars 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Responsable Commercial
    Secteur : Finance

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

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Responsable Commercial
    Inscrit en
    Mars 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Responsable Commercial
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 51
    Points : 30
    Points
    30
    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