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 :

.CodeName ne fonctionne pas


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Homme Profil pro
    Formateur et développeur bureautique
    Inscrit en
    Mars 2007
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur et développeur bureautique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 566
    Par défaut .CodeName ne fonctionne pas
    Bonjour tout le monde

    Je ne comprends pas pourquoi dans le code suivant, la ligne avec le CodeName n'affiche rien (ligne 32 dans le code ci-dessous).
    Plus exactement, cette ligne n'affiche rien quand la macro est lancée automatiquement à l'ouverture du fichier.
    Mais si on lance la macro "à la main", une fois le fichier ouvert, tout fonctionne comme il faut.

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    Sub Intervertir()
     
    Dim CheminP As String 'Chemin des fichiers des postes
    Dim CheminS As String 'Chemin des fichiers des salons
    Dim CheminM As String 'Chemin du fichier modèle
    Dim FichierM As String 'Nom du fichier modèle
    Dim FichierP As String 'Nom du fichier de poste en cours
    Dim WbFichierP As Workbook 'Classeur de poste en cours
    Dim WbFichierM As Workbook 'Classeur du fichier modèle
    Dim FeuilleS As Worksheet 'Feuille salon dans le classeur poste en cours
    Dim NomLongClass As String 'Nom du classeur salon
     
    Application.ScreenUpdating = False
     
    CheminP = "C:\Users\Pierre Dumas\Desktop\test\Postes\"
    CheminS = "C:\Users\Pierre Dumas\Desktop\test\Salons\"
    CheminM = "C:\Users\Pierre Dumas\Desktop\test\Modele\"
     
    FichierM = "Salon.xlsx"
     
    'Ouvrir le classeur modèle de salon
    Set WbFichierM = Workbooks.Open(CheminM & FichierM)
     
    FichierP = Dir(CheminP & "*.xlsx")
       Set WbFichierP = Workbooks.Open(CheminP & FichierP)
       For Each FeuilleS In WbFichierP.Worksheets
          NomLongClass = "Extr" & FeuilleS.Name & ".xlsx"
          If EstDansCollection(Workbooks, NomLongClass) = False Then  'Verifier si le classeur de salon est ouvert. Si ce n'est pas le cas
             WbFichierM.SaveCopyAs CheminS & NomLongClass 'Duppliquer le classeur modèle avec le nom de ce salon
             Workbooks.Open Filename:=CheminS & NomLongClass 'Ouvrir ce nouveau classeur
          End If
          MsgBox (Workbooks(NomLongClass).Sheets("REALISE").CodeName)
     
     
     
     
          'Suite macro
          Exit For
       Next FeuilleS
     
       WbFichierP.Close
       Set WbFichierP = Nothing
     
    Application.ScreenUpdating = True
    End Sub
     
    Private Function EstDansCollection(Coln As Object, Item As String) As Boolean
    Dim Obj As Object
     
    On Error Resume Next
    Set Obj = Coln(Item)
    EstDansCollection = Not Obj Is Nothing
     
    End Function
    Et voici le contenu de ThisWorkbook
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Workbook_Open()
    Call Intervertir
    Application.Quit
    End Sub

    Je ne vois pas ce que je loupe ou réalise mal

    Merci d'avance aux commentaires me mettant sur le bon chemin.

    Belle après-midi à chacun

    Pierre Dumas

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2021
    Messages
    334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2021
    Messages : 334
    Par défaut
    Salut,

    Essayes "Worksheets" au lieux de "sheets"

  3. #3
    Membre Expert
    Homme Profil pro
    Formateur et développeur bureautique
    Inscrit en
    Mars 2007
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur et développeur bureautique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 566
    Par défaut
    Merci ChristianBosch de s'être penché sur mon problème.

    Mais, après tests, cela n'apporte aucun changement

    Pierre Dumas

  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
    13 169
    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 : 13 169
    Billets dans le blog
    53
    Par défaut
    Bonjour Pierre,
    C'est curieux que cela ne fonctionne pas
    Sheets ou Worksheets ne change rien à l'affaire.
    Je suppose que la variable NomLongClass contient bien le suffixe xlsx ou xlsm et que ce classeur est bien ouvert
    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

  5. #5
    Membre Expert
    Homme Profil pro
    Formateur et développeur bureautique
    Inscrit en
    Mars 2007
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur et développeur bureautique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 566
    Par défaut
    Bonjour Philippe

    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour Pierre,
    C'est curieux que cela ne fonctionne pas
    C'est non seulement curieux, mais c'est surtout pénible

    Cela l'est surtout que cela fonctionne (le .CodeName renvoie bien une valeur) quand je lance la macro avec F5. Mais que cela ne fonctionne pas (le.CodeName ne renvoie aucune valeur) quand c'est lancé automatiquement

    J'ai bien essayé de mettre un Wait ou de faire un .Activate sur le classeur, mais sans résultat.

    Sheets ou Worksheets ne change rien à l'affaire.
    On est bien d'accord

    Je suppose que la variable NomLongClass contient bien le suffixe xlsx ou xlsm et que ce classeur est bien ouvert
    Oui. Cela est réalisé respectivement ligne 27
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NomLongClass = "Extr" & FeuilleS.Name & ".xlsx"
    et ligne 30
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks.Open Filename:=CheminS & NomLongClass
    Merci pour ce regard.

    Pierre Dumas

  6. #6
    Membre Expert
    Homme Profil pro
    Formateur et développeur bureautique
    Inscrit en
    Mars 2007
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur et développeur bureautique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 566
    Par défaut
    Bonsoir mat955

    J'ai bien essayé de modifié mon code en inscrivant la partie ci-dessous, mais c'est toujours récalcitrant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim sH As Worksheet
    Dim MonMsg As String
     
          Workbooks(NomLongClass).Worksheets("REALISE").Activate
          Set sH = Workbooks(NomLongClass).Worksheets("REALISE")
          MonMsg = sH.[_CodeName]
          MsgBox MonMsg
    Le .CodeName ne veut toujours pas s'afficher en lançant la macro à l'ouverture du fichier. Mais cela fonctionne très bien si on la lance depuis l'éditeur VBA.

    Ça commence à m'énerver grave de ne pas trouver.

    Bonne nuit à chacun

    Pierre Dumas

Discussions similaires

  1. Réponses: 6
    Dernier message: 27/01/2004, 11h14
  2. [FP]Writeln ne fonctionne pas !
    Par néo333 dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 01/11/2003, 23h47
  3. UNION qui ne fonctionne pas
    Par r-zo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/07/2003, 10h04
  4. Un Hint sur un PopupMenu ne fonctionne pas !!??
    Par momox dans le forum C++Builder
    Réponses: 6
    Dernier message: 26/05/2003, 16h48
  5. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 00h10

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