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 :

rechercheV VBA nom du fichier variable [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Juin 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2019
    Messages : 6
    Points : 2
    Points
    2
    Par défaut rechercheV VBA nom du fichier variable
    Bonjour

    J'ai besoin de votre aide car je ne trouve pas de solution pour faire ce que je souhaite (je précise, je ne suis pas programmeur, j'ai appris le vba sur le tas...)

    J'ai un fichier de saisie de commande, il s'appelle "EDITION COMMANDE", il y a des codes sur la colonne "B" et les quantités dans la colonne "BB". Une fois la saisie terminé, les utilisateurs l'enregistre dans leur dossier respectif avec un nom spécifique. (ex: Commande BAM 15 06 19.xlsm)

    J'ai un autre fichier qui s'appelle "GLOBAL" et dans lequel je souhaite compiler les commandes saisies par tous les utilisateurs.

    Mon idée était la suivante :
    - lorsque l'on appuie sur un bouton dans EDITION COMMANDE, VBA ouvre le fichier GLOBAL (qui a toujours le même emplacement et nom) puis fait une rechercheV dans une colonne vide pour y incrémenter les quantités. L'intérêt est ensuite que même si on modifie les quantités dans le fichier de saisie, avec une mise à jour des données, le GLOBAL se met à jour.

    Mes problèmes :
    - je n'arrive pas à écrire la partie VBA de la recherche car le nom du fichier source change, et je ne sais pas comment indiquer l'emplacement du fichier non plus dans la formule...

    Voilà, si un JEDI du VBA pouvait m'aider un petit peu ça serait avec plaisir !
    Merci

  2. #2
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut et bienvenue sur le forum...

    Je ne comprends pas ton histoire de RechercheV sur une colonne vide. A priori, si la colonne est vide, le RechercheV risque peu d'y trouver quelque chose ...

    Si j'ai +/- compris ta demande, RechercheV devrait s'effectuer sur un autre classeur péché capital avec Excel: Il faut proscrire les formules interclasseur, qui nécessitent que les classeurs soient disponibles pour fonctionner.

    Perso, j'irais à la pêche aux fichiers (en espérant connaître au moins le début de la racine du chemin) et je balaierais les noms de fichiers en vue de trouver les bons. Je pense qu'à ce stade de tes explications, je ne peux pas faire beaucoup plus. Il faudrait que tu précises où et comment sont stockés les fichiers, et que tu précises également la structure de ceux-ci.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Candidat au Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Juin 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2019
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci, je vais essayer d'être plus précis.

    Tout d'abord, sauf erreur de ma part, lorsqu'on garde les liens entre les classeurs avec une Recherchev, si on appuie sur "actualiser tout" les valeurs sont mises à jour, pas besoin d'ouvrir les classeurs où sont stockés les données. D'où l'intérêt d'avoir un fichier GLOBAL où sont compilé toutes les commandes.

    Une fois qu'un utilisateur a fini de saisir sa commande dans le fichier de SAISIE, il appuie sur un bouton, VBA ouvre le fichier Excel GLOBAL et fait une rechercheV pour y implémenter les valeurs saisies dans le fichier SAISIE.

    actuellement, j'ai une formule sous ce format :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ' l'utilisateur est dans le fichier de SAISIE, donc je cherche le nom qu'il a donné au fichier.
    Dim nom As String
    nom = ThisWorkbook.Name
     
    'j'ouvre le fichier GLOBAL
    Workbooks("GLOBAL").Activate
     
    Range("C5").Select
    Je fais la rechercheV, mais j'ai 2 problèmes : ça marche pas lorsque j'indique (nom) à la place du nom du fichier, la syntaxe est peut-être fausse, et lorsque je mets le nom du fichier manuellement dans la formule ça marche MAIS, ça implémente une valeur sans laisser la formule active dans la feuille

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Range("C5") = WorksheetFunction.VLookup(Range("A5"), Workbooks(nom).Sheets("Feuil1").Range("A2:C30"), 3)
     
     
    'donc quand je tire la cellule pour l'appliquer au reste, ça tire les valeurs, mais pas la formule
        Range("C5").Select
        Selection.AutoFill Destination:=Range("C5:C9999")
        Range("C5:C9999").Select
    J'espère que c'est plus clair..
    Merci

  4. #4
    Candidat au Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Juin 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2019
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Après autre petit détail,
    Je pense que ce serait plus juste d'écrire la formule en indiquant le chemin d'accès du document déjà enregistré grâce à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim CheminEnr As String
    CheminEnr = Workbooks(ActiveWorkbook.Name).FullName
    mais encore une fois, je ne sais pas comment l'intégrer dans une rechercheV en VBA...

    Merci de votre aide !

  5. #5
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonjour, Bonjour le Forum,

    Je ne peux que répéter ce que j'ai déjà écrit.

    Pardonne-moi mo franc-parler, mais ton code repose sur une action immédiate sans la recherche d'une structure rigoureuse.

    Tu écris.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("C5") = WorksheetFunction.VLookup(Range("A5"), Workbooks(nom).Sheets("Feuil1").Range("A2:C30"), 3)
    et 2 lignes plus après

    'donc quand je tire la cellule pour l'appliquer au reste, ça tire les valeurs, mais pas la formule
    Range("C5").Select
    Selection.AutoFill Destination:=Range("C5:C9999")
    Sache que
    revient à écrire
    Comment peux-tu dans ces conditions étirer une formule sure plage de cellules, alors que celle-ci n'existe pas?

    Certes, on peut lire dans des fichiers fermés.
    Au demeurant, je te conseillerais de
    - écrire une formulation pour un exemple précis
    - disposer d'une plage contenant les fichiers
    - effectuer une boucle sur celle-ci, en remplaçant le nom du classeur source dans cette formule
    - ensuite, et ensuite seulement affecter cette formule sur la plage concernée
    - enfin, pour éviter des liaisons gourmandes en mémoire et performance, affecter sur les cellules formulées un collage spécial de valeurs en codant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With Worksheets("lawks").Range("A1:A15")
    .Value = .Value
    End With
    Autres marques de rigueur
    - Reporter un Code en le balisant par les bornes #
    - Attacher les objets Range à leur feuille parent
    - En ayant au préalable effectué un minimum de lecture sur les cibles des liens figurant en pièce jointe, débarrasser ton code des méthodes superflues qui n'ont pour effet que de l'alourdir et en rendre sa lecture plus compliquée.

    Pour t'aider à suivre le processus que je propose, tous les mots-clés utiles pour développer un code rigoureux te sont donnés dans les espaces documentaires
    A toi de rechercher quels sont ces mots-clés, par une recherche sur la toile ("Formulation VBA EXCEL"), par exemple puis de procéder à leur utilisation.

    Voilà
    Fichiers attachés Fichiers attachés

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  6. #6
    Candidat au Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Juin 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2019
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci pour vos conseils,
    comme je vous l'ai dit, j'apprends le VBA sur internet, je n'ai aucune formation de programmeur.

    Alors j'ai solutionner mon problème différemment, en utilisant des paste link entre les fichiers...
    et ça fonctionne. Donc un grand merci d'avoir tout de même pris le temps de me répondre.

    Je vais me servir du fichier pour approfondir mes connaissance.

    Merci en tout cas pour votre aide !

  7. #7
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Salut,

    Je ne sais pas ce qu'est un paste link
    (Copier lien?) Si tu peux m'en dire plus......

    Pour le reste, j'espère que les liens te seront utiles et t'aideront à structurer tes codes, même si ceux-ci sont simples.

    Bonne continuation.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  8. #8
    Candidat au Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Juin 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2019
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    ci-dessous le code intégral :

    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
    Sub Integration_GLOBAL()
     
    Sheets("COMPIL").Activate
     
    Range("A4:E2000").Select
    Selection.Copy
     
     
    Workbooks.Open ("D:\xxxxxxx\GESTION\GLOBAL.xlsm")
     
    Dim maLigne As Long
    maLigne = Range("A" & Rows.Count).End(xlUp).Row + 1
     
    Range("A" & maLigne).Select
    ActiveSheet.Paste Link:=True
     
     
    ActiveWorkbook.Close Savechanges:=True
     
     
    End Sub

  9. #9
    Candidat au Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Juin 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2019
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    avec Paste Link

    en admettant que sur une feuille1 mes cellules se réfèrent aux valeurs des cellules d'une feuille2 grâce à des =
    lorsque je copie/colle les cellules de la feuille1 dans un autre classeur, je garde le lien grâce à PASTE LINK, et Excel garde le chemin pour rechercher les valeurs et les mettre à jour.

    Je conçois que c'est du bidouillage... mais ça marche...

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

Discussions similaires

  1. Nom de fichier variable sur VBA
    Par adibou37 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/02/2017, 15h45
  2. [XL-2007] Recherchev vers classeurs fermés et nom du fichier variable
    Par charli.b2802 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/07/2013, 14h49
  3. [VBA]-Enregistrement d'un nom de fichier variable
    Par marc56 dans le forum Excel
    Réponses: 2
    Dernier message: 10/08/2007, 08h54
  4. Nom de fichier variable.
    Par ::Fistons dans le forum Langage
    Réponses: 4
    Dernier message: 05/04/2006, 11h32
  5. Réponses: 3
    Dernier message: 25/01/2006, 17h54

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