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 :

utilisation de variable dans 2 macros différentes [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Tech Maintenance
    Inscrit en
    Mai 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Tech Maintenance
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2012
    Messages : 13
    Points : 14
    Points
    14
    Par défaut utilisation de variable dans 2 macros différentes
    bonjour

    j’ai une macro A qui importe les fichiers d'un répertoire
    donc dans cette macro j’ai
    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
    Dim Dossier As Object, fso As Object
    Dim Files As Object
    Dim MaVal
     
    Sub U21NEXTFOR()
    '(...)
      ' Création de l'objet File System Object
      Set fso = CreateObject("Scripting.FileSystemObject")
      ' Créé l'objet Dossier à partir du chemin definit
      Set Dossier = fso.GetFolder("C:\AAAA\AA")
      Set Files = Dossier.Files
      ' Si aucun fichier dans le dossier, on sort de la procédure
      If Files.Count = 0 Then Exit Sub
      ' Sinon pour chaque fichier
      For Each File In Files
        ' Contruit le chemin d'accès
        VPath = Dossier.Path & "\" & File.Name
     '(...)
    'Import Fichier de C:\AAAA\ImportU21\
           With ActiveSheet.ListObjects.Add(SourceType:=0 _
                , Source:=Array("OLEDB;(...);Data Source=" & File & ";Mode=Share Deny Write;E" _
    '(...)
        End With
    Dans Ma Macro B (qui s’exécute a l’intérieur de cette boucle âpres l'import du fichier)
    je souhaite concatèner sur chaque ligne le nom du fichier et ses lignes
    Sous la forme concatenate(" &file & ",blabla,blabla)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Range("U2").Select
        ActiveCell.FormulaR1C1 = _
            "=IF(NBLignes<ROW()-1,"""",CONCATENATE(" & File & ",IF(NBLignes<ROW()-1,"""",VLOOKUP(ROW()-1,TotalPourRechv,R1,1)),"" aa "",ROW()))"
    Apres je copie et colle cette formule sur la suite du tableau
    Malheureusement la valeur file me revoit un vide
    Quand je fait une pose dans la macro et passe ma sourie sur file il me marque vide
    il doit i avoir une erreur de ponctuation si quelqu’un avait une idée

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 952
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 952
    Points : 28 960
    Points
    28 960
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si je me réfère à la zone de déclaration de variables niveau module
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim Dossier As Object, fso As Object
    Dim Files As Object
    Dim MaVal
    Sub U21NEXTFOR()
    La variable File ne semble pas être déclarée.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Tech Maintenance
    Inscrit en
    Mai 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Tech Maintenance
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2012
    Messages : 13
    Points : 14
    Points
    14
    Par défaut
    salut a toi corona et merci
    oui j'ai bien remarqué et je ne comprend pas ^^
    mais jutilise bien cette variable dans le premier code comme source pour mes import et il marche tres bien ^^

    dans le doute jai cree MAVAL avant le lancement de macroB j ai mit
    Set MaVal = File
    et j'ai remplacé " & File & " par " & MaVal & " sa marche pas mieux
    Erreur 1004 erreur definie par l application ou par l'objet
    il me cible ma formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        ActiveCell.FormulaR1C1 = _
            "=IF(NBLignes<ROW()-1,"""",CONCATENATE(" & MaVal & ",IF(NBLignes<ROW()-1,"""",VLOOKUP(ROW()-1,TotalPourRechv,R1,1)),"" aa "",ROW()))"
    quand je passe la sourie sur MaVal il me met MaVal="Nom23.mdb" se que je voudrait en faite ^^

    Merci a toi

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 952
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 952
    Points : 28 960
    Points
    28 960
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si une variable est de portée procédure elle n'est pas connue dans une autre.
    Cette variable doit donc être déclarée en tête de module soit comme Variable module par un dim maVariable as Type soit comme variable publique par Public maVariable as Type
    Une autre possibilité serait d'écrire une procédure avec argument et passer cette variable (ici File) comme argument à la procédure.

    Bonjour,
    Je viens de relire ton post.
    L'erreur vient sans doute de la syntaxe de la formule que tu écris.
    Si la variable maVal est un String, fais précéder et suivre maVal par chr(34) qui est le code AscII des guillemets
    Comme ci-dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CONCATENATE(" & Chr(34) & maVal & Chr(34) & "

  5. #5
    Membre à l'essai
    Homme Profil pro
    Tech Maintenance
    Inscrit en
    Mai 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Tech Maintenance
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2012
    Messages : 13
    Points : 14
    Points
    14
    Par défaut
    Grand Merci
    a toi il suffisait donc des Chr(34) &
    Nickel

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

Discussions similaires

  1. Utiliser une valeur d'une variable dans une Macro
    Par ca_adrien dans le forum Macro
    Réponses: 7
    Dernier message: 01/08/2013, 14h14
  2. [2012] Utiliser une variable dans un WHERE différent
    Par CrasherSEP dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 11/07/2013, 15h27
  3. Réponses: 14
    Dernier message: 27/07/2011, 09h50
  4. Réponses: 5
    Dernier message: 06/03/2010, 14h47
  5. Réponses: 6
    Dernier message: 01/04/2007, 20h13

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