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 excel fonction rechercheV


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
    Technicien réseau
    Inscrit en
    Janvier 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2017
    Messages : 1
    Par défaut Macro excel fonction rechercheV
    Bonjour,
    Je me permets de vous écrire afin d'avoir un peu d'aide étant novice sous Excel/VBA.
    Je souhaite créer une macro qui importe deux fichiers distincts pour effectuer une fonction de "recherche Verticale" et, par la suite extraire le résultat en format CSV.

    J'ai réussi à réaliser les premières étapes d'imports via le module "enregistrer une macro". Cependant lorsque je procède à l'enregistrement de la fonction rechercheV.
    En effet, lors de l'enregistrement de la fonction, celle ci a été faite par rapport à la "taille" de mon tableau à traiter. Cependant celui ci peut changer.
    Ci dessous la fonction enregistrée :

    ***********************************************
    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
    ' Creation_fichier_import Macro
    '
     
    '
        Sheets("Export_OSS").Select
        Cells.Select
        Range("C2").Activate
        Selection.Copy
        Sheets("Import_OSS").Select
        ActiveSheet.Paste
        Range("C2").Select
        Application.CutCopyMode = False
        ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],'Site ID'!C[-2]:C[-1],2,0)"
        Range("C2").Select
        Selection.AutoFill Destination:=Range("C2:C11")
        Range("C2:C11").Select
    ****************************************************
    J'aimerais donc que la fonction rechercheV s'applique à l'ensemble des cellules du tableau a traiter (tableau présent dans la feuille "Export_OSS"), et éviter qu'ils s'arrête à la cellule C11 .
    Pouvez vous m'aider sachant que je suis totalement novice en VBA ?

    Enfin, si je souhaite exporter le résultat dans un CSV où toute les données d'une même ligne serait concaténées sur une seule cellule et séparées par des virgules, dois je réaliser une fonction en conséquence ou l'export en CSV suffira ?

    Merci d'avance pour votre aide.

    Cordialement.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Avril 2007
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2007
    Messages : 272
    Par défaut
    Bonjour

    2 questions :
    La première comment rendre un code VBA dynamique en fonction du nombre de ligne, nous sommes là dans l'intérêt d'une programmation, enregistrer une macro permet l'apprentissage du code, mais à chaque fois, il faut le reprendre et l'adapter, faire une boucle dans le cas présent en fonction du nombre de ligne renseignées.
    La deuxième, une possibilité est de concaténer dans une seule cellule par ligne selon le format attendu pour l'usage externe, cela permet de bien maîtriser le format.

    A+
    Bertrand

  3. #3
    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 !

    Déjà éviter les boucles autant que possible !

    Juste voir ce que retournent les propriétés CurrentRegion{.Address} & UsedRange{.Address} …     (cf aide VBA)

    _________________________________________________________________________________________________________
    Je suis Paris, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Une piste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Sub Test()
     
        With Worksheets("Export_OSS")
     
            'ici, en référence A1
            .Range("C2").Formula = "=VLOOKUP(" & Range("B2").Address(0, 0) & ",'Site ID'!A:B,2,0)"
     
            'en supposant que la colonne B définisse la taille de la plage en colonne C
            .Range("C2").AutoFill .Range("C2:C" & .Cells(.Rows.Count, 2).End(xlUp).Row)
     
        End With
     
    End Sub

  5. #5
    Membre Expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Par défaut
    Bonjour,

    Ah, les joies et les travers de l'enregistreur de Macros .... Mais heureusement qu'il existe

    Ceci étant, par rapport à votre code, quelques suggestions:

    1. Regardez bien les tutoriels VBA: ils sont une mine précieuse d'informations et d'exemples
    2. Proscrire les Select et Activate qui sont lents et peu réutilisables
    3. Ne pas oublier que VBA traite des objets et qu'il est intéressant de les manipuler

    Brut de fonderie (regardez bien la fenêtre Immédiate du VBE), voilà un exemple de votre code modifié:
    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
    Option Explicit
     
    Sub Test_Dvp()
     
    Dim SrcRng As Range, DestRng As Range, WshP As Worksheet
     
    ' Initialisation
        Set WshP = Sheets("Import_OSS")
     
    ' On sélectionne le range à copier avec une extension à la région (Ctrl + * sous Excel)
        Set SrcRng = Sheets("Export_OSS").Range("A1").CurrentRegion     'A adapter
        Debug.Print SrcRng.Address, SrcRng.Cells.Count
     
    ' Copy
        SrcRng.Copy Destination:=WshP.Range("A1")
     
    ' Destination
        Set DestRng = WshP.Range("A1").CurrentRegion
        Debug.Print DestRng.Address
     
    ' On enlève la 1ère ligne et on garde la 3ème colonne
        Set DestRng = DestRng.Offset(1, 0).Columns(3).Resize(DestRng.Rows.Count - 1, 1)
        Debug.Print DestRng.Address
     
        DestRng.FormulaR1C1 = "=VLOOKUP(RC[-1],C[-2]:C[-1],2,0)"     'A adapter: on assigne les formules en une passe
     
    End Sub

Discussions similaires

  1. [XL-2013] Excel..Fonction RechercheV avec formule à l'intérieur
    Par Russian dans le forum Excel
    Réponses: 3
    Dernier message: 19/03/2015, 23h09
  2. [E-03] Fonction recherchev excel 2003
    Par inkydjango dans le forum Excel
    Réponses: 2
    Dernier message: 03/10/2008, 16h42
  3. [Macro Excel] Fonction qui calcule une formule dans une cellule
    Par Enthau dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/07/2008, 16h31
  4. [Excel] Comment utiliser la fonction RECHERCHEV
    Par forsay1 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 03/02/2006, 11h43
  5. [VBA-E]Etablir une macro d'une fonction rechercheV
    Par dani317 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/10/2005, 11h06

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