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 fonctionnant dans le classeur du projet mais pas dans Personnal [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien
    Inscrit en
    Février 2020
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2020
    Messages : 32
    Points : 16
    Points
    16
    Par défaut Macro fonctionnant dans le classeur du projet mais pas dans Personnal
    Bonjour, désolé de vous déranger.

    Débutant,

    j'ai fait une macro qui fonctionne dans le classeur mais quand je la déplace pour l’utiliser en Projet Personnel.XLSB
    elle ne fonctionne pas (rien ne se passe).
    Je voudrai pouvoir utiliser la macro en Projet Personnel.XLSB pour d'autre dossier
    Pouvez m'aidez s’il vous plait plusieurs jours que j’essaie de trouver le solution mais je n'y parviens pas.
    Merci

  2. #2
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour,
    Citation Envoyé par Riri33 Voir le message
    Bonjour, désolé de vous déranger.
    Débutant,
    j'ai fait une macro qui fonctionne dans le classeur mais quand je la déplace pour l’utiliser en Projet Personnel.XLSB
    elle ne fonctionne pas (rien ne se passe).
    Ici tu ne déranges personne, le rôle de ce forum est d'aider à résoudre les problèmes.
    Par contre il convient d'expliquer son problème, de publier le code, très peu de personnes ouvrent les fichiers joints, en particulier lorsqu'ils contiennent des macro (voir : http://www.developpez.net/forums/d84...s-discussions/)
    Si ta macro ne fonctionne pas il est fort probable que tu aie fait abstraction des la désignation des objets parents. Commence par là.
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien
    Inscrit en
    Février 2020
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2020
    Messages : 32
    Points : 16
    Points
    16
    Par défaut
    Merci,

    Bonsoir,

    Désolé première fois que j'utilise un forum ,

    J'ai travaillé sur la macro dans le classeur Banane
    la j'ai fait une erreur car je voulais l'utiliser pour d'autre dossier .

    Quand j'utilise la macro quand elle est dans le classeur tout fonctionne correctement:

    VBAProject (Banane mfr124.xls)
    -feuil1(feuil1)
    -Module21 "la ou se trouve la macro"
    -ThisWorkbook


    Quand je met la macro dans VBAProject(PERSONNAL.XLSB) pour qu'elle fasse la même chose car j'ai besoin de l'utiliser pour d'autre dossiers
    -VBAProject(PERSONNAL.XLSB)
    -Module2 "la ou se trouve la macro"
    -ThisWorkbook

    Je lance la macro il y aucun message d'erreur mais la macro a fait aucun changement dans le classeur Banane .
    C'est la que j'ai mon problème

    Je vais tenter d'expliquer ce que j'essaie de faire.

    J'ai dans mon dossier 3 fichiers excel ils ont en commun "mfr124"

    -Banane mfr124.xls
    -Choux mfr124.xls
    -mfr124.xls

    Je ne peux pas utiliser de chemin prédéfini.
    J'ouvre mon fichier excel Banane,
    je lance la macro il ouvre le deuxième fichier excel "Choux " qui est dans le même dossier
    je lui demande de pas tenir compte de "mfr124" qui est commun au 3 fichiers pour les différencier mais qui lui changera dans les autres dossiers.
    Il ouvre le classeur excel Choux et va dans l'onglet legume et je fais une recherche dans la feuille du terme CQF qui sera un point commun
    pour tout les autres dossier, la colonne C sera toujours la même mais sur une ligne différente
    Après différent copier/coller pour compléter .

    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
    Sub essai()
    Dim cheminFichier As String
    Dim Fichier As String
    cheminFichier = ThisWorkbook.Path & "\"
    Fichier = Dir(cheminFichier & "\*.xls")
    'recherche le mot Choux avec une variable dans le dossier (ex: Choux aze12.xls) il y a seulement un fichier Choux dans le dossier
    Do While Fichier <> ""
        If InStr(1, Fichier, "Choux", vbTextCompare) <> 0 Then  
            Workbooks.Open (cheminFichier & Fichier)
            'selection de l'onglet "legume" dans le fichier Choux
            Sheets("legume").Select
            'selection de la colonne C
            Columns("C:C").Select
            'recherche CQF dans la feuille "legume" dans la colonne C
            Selection.Find(What:="CQF", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
                :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
                False, SearchFormat:=False).Activate
            'selection de la cellule
            ActiveCell.Offset(0, -2).Select
            'copie ce que contient la cellule
            Selection.Copy
            'Classeur Banane
            ThisWorkbook.Activate
            ' ici j'applique  la suite de la macro pour copier/coller a certain endroit d'un classeur a un autre classeur qui sont dans le même dossier
            Workbooks(Fichier).Activate
            ActiveWindow.Close
            Exit Sub
        End If
        Fichier = Dir
    Loop
    End Sub
    Les termes :
    -Bananes
    -Choux

    Seront toujours commun dans les autres dossiers mais avec un chemin d’accès différents

  4. #4
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour,

    Pour qu'une macro fonctionne correctement il faut que le code soit précis, c'est-à-dire ne laisser aucune ambigüité, par exemple :
    Code VBA : 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
    Option Explicit
    Sub essai()
    Dim classeur As Workbook
    Dim plage As Range
    Dim celluleTrouvee As Range
    Dim celluleDestination As Range
    Dim cheminDossier As String
    Dim nomFichier As String
     
      Set celluleDestination = ThisWorkbook.Worksheets(1).Range("A2")  ' à adapter
      cheminDossier = ThisWorkbook.Path & "\"
      nomFichier = Dir(cheminDossier & "\*.xls")
      Do While nomFichier <> ""
        If InStr(1, nomFichier, "Choux", vbTextCompare) <> 0 Then
          Set classeur = Workbooks.Open(cheminDossier & nomFichier)
          Set plage = classeur.Worksheets("legume").Columns("C:C")
          Set celluleTrouvee = plage.Find(What:="CQF", LookIn:=xlFormulas, LookAt:=xlPart)
          If Not celluleTrouvee Is Nothing Then
             celluleTrouvee.Offset(0, -2).Copy Destination:=celluleDestination
             Set celluleDestination = celluleDestination.Offset(1)  ' destination suivante
          End If
          classeur.Close SaveChanges:=False
        End If
        nomFichier = Dir
      Loop
    End Sub

    Eviter les Select, selection, ...
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  5. #5
    Membre à l'essai
    Homme Profil pro
    Technicien
    Inscrit en
    Février 2020
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2020
    Messages : 32
    Points : 16
    Points
    16
    Par défaut
    Merci Patrice740 ,


    de votre aide et des nombreuses améliorations apportées .
    Beaucoup de changement, sa va me permettre de m’améliorer et de comprendre toute les modifications merci .
    Pour le moment je bloque sur la première ligne que je devais adapter .

    j'ai essayé d'adapter cette ligne mais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set celluleDestination = ThisWorkbook.Worksheets(1).Range(A2)  ' à adapter
    en modifiant ainsi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set celluleDestination = ThisWorkbook.Worksheets(Banane).Range(A2)  ' à adapter
    J'ai essayé plusieurs changement mais toujours une erreur sur cette ligne en particulier sur Range .

    La je travaille sur la macro que dans VBAProject(PERSONNAL.XLSB) pour éviter la mauvaise surprise que j'ai eu.

    Pouvez vous m'aider sur cette ligne s'il vous plait ?
    Merci

  6. #6
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Re,

    Il manque les guillemets anglais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set celluleDestination = ThisWorkbook.Worksheets("Banane").Range("A2")  ' à adapter
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  7. #7
    Membre à l'essai
    Homme Profil pro
    Technicien
    Inscrit en
    Février 2020
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2020
    Messages : 32
    Points : 16
    Points
    16
    Par défaut
    Bonjour,

    J'avais déjà essayer

    1. Set celluleDestination = ThisWorkbook.Worksheets("Banane").Range("A2") ' à adapter


    mais j'avais toujours une erreur malgré tout .

  8. #8
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Quelle erreur ?
    (il ne faut pas mettre le numéro de ligne)
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  9. #9
    Membre à l'essai
    Homme Profil pro
    Technicien
    Inscrit en
    Février 2020
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2020
    Messages : 32
    Points : 16
    Points
    16
    Par défaut
    Bonjour,

    encore merci de l'aide apportée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Set celluleDestination = ThisWorkbook.Worksheets("Banane").Range("A2")
    Set celluleDestination = ThisWorkbook.Worksheets("Banane").Range("")
    Set celluleDestination = ThisWorkbook.Worksheets("Banane").Range()
    Set celluleDestination = ThisWorkbook.Worksheets("Banane")

    J'ai essayé toute ces possibilités mais me renvoie une erreur en soulignant la ligne complète en jaune.
    Je me demande si c'est pas dû au nom du classeur qui est Banane mfr124.xls.
    Cette partie du nom du classeur sera toujours différente "mfr124" dans les autres dossiers.
    La seule partie commune pour tout les autres dossiers est :
    Banane
    Choux
    je me demande si le problème vient pas de la.

  10. #10
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Le nom du classeur n'a rien voir. la bonne syntaxe est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set celluleDestination = ThisWorkbook.Worksheets("Banane").Range("A2")
    (sans numéro de ligne)

    Je répète : quelle est l'erreur renvoyée ????
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  11. #11
    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 773
    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 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    ThisWorkbook est un objet Workbook représentant le classeur où se trouve le code VBA.
    Si le code se trouve dans le classeur Personnal.xlsb, tu ne peux plus utiliser ThisWorkbook mais soit ActiveWorkbook si Bananemfr124.xls" est le classeur actif soit Workbooks("Banane" & "le suffixe du nom" & ".xls" ("Le suffixe du nom" pouvant être par exemple mfr124
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  12. #12
    Membre à l'essai
    Homme Profil pro
    Technicien
    Inscrit en
    Février 2020
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2020
    Messages : 32
    Points : 16
    Points
    16
    Par défaut
    Bonsoir,

    En réponse à Patrice740

    J'ai le code erreur d’exécution '9' :
    L'indice n'appartient pas à la sélection.


    En réponse à Philippe Tulliez

    oui le code se trouve dans le classeur Personnal.xlsb
    pour pouvoir l'utiliser pour d'autre dossier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set celluleDestination = Workbooks("Banane" & "le suffixe du nom" & ".xls").Range("A2")
    cheminDossier = ActiveWorkbook.Path & "\"
    nomFichier = Dir(cheminDossier & "\*.xls")


    Je pense que j'ai pas réussi malgré plusieurs différents essais de mettre en pratique ce que vous m'expliquiez.
    J'ai mis ce code mais il me donne un message d'erreur d’exécution '9'

  13. #13
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Quand Philippe écrit :

    Workbooks("Banane" & "le suffixe du nom" & ".xls" ("Le suffixe du nom" pouvant être par exemple mfr124)

    Il faut comprendre et écrire :

    Workbooks("Banane" & " mfr124" & ".xls".

    ou plus simplement :

    Workbooks("Banane mfr124.xls".
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  14. #14
    Membre à l'essai
    Homme Profil pro
    Technicien
    Inscrit en
    Février 2020
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2020
    Messages : 32
    Points : 16
    Points
    16
    Par défaut
    Bonsoir Patrice740,

    Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set celluleDestination = Workbooks("Banane" & " mfr124" & ".xls").Range("A2")  
        cheminDossier = ActiveWorkbook.Path & "\"
        nomFichier = Dir(cheminDossier & "\*.xls")
    J'ai un code erreur d’exécution '438':
    Propriété ou méthode non gérée par cet objet

    sur la ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set celluleDestination = Workbooks("Banane" & " mfr124" & ".xls").Range("A2")
    Mais le suffixe ici dans l'exemple qui est mfr124 si j'applique la macro dans un autre dossier avec un classeur qui a comme suffixe tfr15f la macro fonctionnera t'elle ?
    ou je devrais modifier le code au niveau du suffixe pour que la macro fonctionne pour un autre classeur ?

    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set celluleDestination = Workbooks("Banane" & " tfr15f" & ".xls").Range("A2")

  15. #15
    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 773
    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 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Mais le suffixe ici dans l'exemple qui est mfr124 si j'applique la macro dans un autre dossier avec un classeur qui a comme suffixe tfr15f la macro fonctionnera t'elle ?
    ou je devrais modifier le code au niveau du suffixe pour que la macro fonctionne pour un autre classeur ?
    Si le classeur "Banane" & etc. est le classeur actif, ActiveWorkbook suffit
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  16. #16
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour,
    Citation Envoyé par Philippe Tulliez Voir le message
    Si le classeur "Banane" & etc. est le classeur actif, ActiveWorkbook suffit
    Je préfère éviter les si ...
    En particulier pour des macros dans Personnal.xlsb, utiliser ActiveWorkbook sans s'assurer qu'il s'agit du bon classeur, c'est prendre le risque d'appliquer la macro à n'importe quel classeur.
    De façon plus générale je conseille d'éviter l'emploi des références aux objets actifs (Activeworkbook, ActiveSheet, Actvecell, Selection, ...) et par conséquence les références implicites qui peuvent générer une ambigüité.
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  17. #17
    Membre à l'essai
    Homme Profil pro
    Technicien
    Inscrit en
    Février 2020
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2020
    Messages : 32
    Points : 16
    Points
    16
    Par défaut
    Bonjour,

    merci de votre aide,
    mais je ne ne vois plus comment m' y prendre malgré des recherche sur internet .

  18. #18
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Citation Envoyé par Riri33 Voir le message
    mais je ne ne vois plus comment m' y prendre malgré des recherche sur internet .
    Les solutions qu'on t'a fourni fonctionnent, Quel est le problème ?

    J'ai du mal à comprendre.
    Pour pouvoir t'aider, il faudrait que tu exprimes clairement le contexte et ce que tu voudrais faire.

    Par exemple : « Je ne peux pas utiliser de chemin prédéfini. » , « si j'applique la macro dans un autre dossier avec un classeur qui ... » Comment détermines-tu le dossier ?
    Comment définis-tu le "légume" à traiter, etc ....
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  19. #19
    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 773
    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 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour Patrice,
    Je préfère éviter les si ...
    En particulier pour des macros dans Personnal.xlsb, utiliser ActiveWorkbook sans s'assurer qu'il s'agit du bon classeur, c'est prendre le risque d'appliquer la macro à n'importe quel classeur.
    Ce n'était pas un SI VBA mais simplement du français. Je voulais simplement exprimer le fait que si le classeur actif était celui que la procédure devait gérer. On pouvait utiliser ActiveWorkbook

    De façon plus générale je conseille d'éviter l'emploi des références aux objets actifs (Activeworkbook, ActiveSheet, Actvecell, Selection, ...) et par conséquence les références implicites qui peuvent générer une ambigüité.
    Tout dépend de la manière font on a organisé l'architecture de l'application. Je n'ai aucun problème avec l'ActiveWorkbook parce-que je crée un menu à l'ouverture du classeur qui peut utiliser a procédure et ce menu disparaît si un autre classeur est actif mais de toutes manières mes procédures placées dans les classeur xlam (je n'utilise pas le personnal.xlsb) ont toujours un argument optionnel qui prend par défaut l'ActiveWorkbook
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  20. #20
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour Philippe,
    Citation Envoyé par Philippe Tulliez Voir le message
    ...
    Je parle bien du "si" français : à partir du moment où il existe, c'est qu'il y a aussi une autre éventualité ..., et on ne peut pas laisser la place au doute.

    Tu ne fais que confirmer ce que j'ai dis : Tu n'utilises pas Activeworkbook, sans t'assurer que c'est le bon classeur, dans ce cas, pas de problème (et pas de si, donc pas de doute).
    C'est bien évidemment suffisant, mais comme ce n'est pas le cas de la plupart des posts, je préfère conseiller d'éviter des objets actifs (ce n'est qu'un conseil).

    Et pour ma part, je n'ai pas de personnal.xlsb
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/05/2015, 23h19
  2. Réponses: 3
    Dernier message: 11/05/2014, 22h24
  3. [Débutant] Méthode d'une classe fonctionne dans un projet mais pas ailleurs
    Par kryptong dans le forum C#
    Réponses: 1
    Dernier message: 27/02/2013, 20h52
  4. macro fonctionne dans un classeur test mais pas dans mon vrai classeur
    Par steeeve34 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 18/09/2012, 22h15
  5. [XL-2010] macro fonctionne dans l'editeur mais pas depuis une feuille
    Par Kanetsugu dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/12/2011, 06h56

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