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 :

Attribution à une variable - Erreur d'exécution 91: Variable objet ou variable de bloc With non définie [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Finance d'entreprise
    Inscrit en
    Juin 2016
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Finance d'entreprise
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2016
    Messages : 184
    Par défaut Attribution à une variable - Erreur d'exécution 91: Variable objet ou variable de bloc With non définie
    Bonjour à toutes et à tous,

    J'ai déjà eu le même message dans une autre situation et c'était parce que je n'avais pas mis Set avant la variable de type objet (voir cette discussion).

    Cette fois, je ne vois pas pourquoi ça ne fonctionne pas. L'erreur est au niveau de la ligne en gras:
    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
    Sub t()
    
            Dim cl As Workbook  
            Dim cl1 As Workbook    
            Dim cl2 As Workbook     
            Dim cl3 As Workbook     
            Dim Fd1 As Worksheet   
            Dim Fd2 As Worksheet    
            Dim Fd3 As Worksheet   
    
    For Each cl In Workbooks
    
        If Left(cl.Name, 8) = "Classeur" Then
        
            Select Case Mid(cl.Sheets(1).Range("D2"), 11, 1)
            
            Case Is = 1
            
                Set cl = cl1
                Set Fd1 = cl1.Sheets(1)
                
            Case Is = 2
            
                Set cl = cl2
                Set Fd2 = cl2.Sheets(1)
                
            Case Is = 3
            
                Set cl = cl3
                Set Fd3 = cl3.Sheets(1)
            
            Case Else
            
                MsgBox "Autre"
            
            End Select
            
        End If
        
    Next
    
            MsgBox cl1.Name & " " & cl2.Name & " " & cl3.Name
    
    End Sub
    Y a-t-il un ou une génie dans les parages?

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each cl In Workbooks
    Cela veut dire que tu as plusieurs d'ouverts. Donc, as-tu plusieurs classeurs d'ouverts ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     Case Is = 1
     
                Set cl = cl1
                Set Fd1 = cl1.Sheets(1)
    Cela, cela veut dire que tu veux utiliser la première feuille du classeur 1. Est-ce bien cela que tu veux ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select Case Mid(cl.Sheets(1).Range("D2"), 11, 1)
    Es-tu sûr de vraiment ramasser 1, 2 ou 3.

    Mets un point d'arrêt sur la ligne

    Sélectionnes Mid(cl.Sheets(1).Range("D2"), 11, 1) et mets-y un espion

    F8 pour exécuter ta ligne, et même plus long, au pas-à-pas. Et tu surveilles en même temps ce que ton Mid() te donne dans la fenêtre "Espions"

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    est assez étrange. Je ne vois pas ce qu'est cl1 dans ton code
    Je pense que tu veux peut-être dire le contraire, à savoir :
    idem pour les autres.

  4. #4
    Membre confirmé
    Homme Profil pro
    Finance d'entreprise
    Inscrit en
    Juin 2016
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Finance d'entreprise
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2016
    Messages : 184
    Par défaut
    Merci à vous deux!

    @clementmarcottte: en l'occurrence, je me suis bien servi du Pas à pas que je trouve très utile, mais je ne me suis encore jamais servi d'un espion. Merci pour la suggestion. J'y penserai la prochaine que j'ai un souci d'attribution de valeur à une variable.

    @unparia: eh oui! C'est la solution! Je posais bien sûr la question uniquement pour voir si vous suiviez



    Merci beaucoup

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

Discussions similaires

  1. Réponses: 14
    Dernier message: 23/05/2016, 14h05
  2. erreur d'exécution 91 variable objet ou variable de bloc with non définie
    Par ramo123469 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 01/04/2016, 14h55
  3. [XL-2013] erreur d'exécution 91 variable objet ou variable de bloc with non définie
    Par tmlpqsdpmdlc dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 08/06/2015, 13h25
  4. Réponses: 6
    Dernier message: 24/02/2015, 09h06
  5. Réponses: 4
    Dernier message: 24/05/2014, 19h24

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