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 :

Erreur d'execution 91: Variable objet ou variable de bloc with non définie [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur de production
    Inscrit en
    Juin 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur de production
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2015
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Erreur d'execution 91: Variable objet ou variable de bloc with non définie
    Bonjour,

    Novice sur le VBA excel, je suis actuellement sur un projet professionnel me permettant de facilité la gestion d'une unité de production.

    Je bloque actuellement sur une "Erreur d'execution 91: Variable objet ou variable de bloc with non définie" et n'arrive pas à la corriger.

    Le code sur lequel je travail doit créer, à partir d'un tableau, une feuille sur un autre classeur excel, et y copier un code d'un de ces modules vers la feuille nouvellement créée.
    C'est sur ce dernier point qu'intervient l'erreur.

    Ci-dessous un extrait de mon code, relatif à cette fonction (l'erreur intervient sur 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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
     
    Option Explicit
    Sub Création_feuille()
     
        Dim A As String
        Dim B As String
        Dim DernLig As Long
        Dim S As String
        Dim Wbk As Workbook
     
    'Copie les données
        Windows("fichier_entree.xlsm").Activate
        Columns("A:C").Copy
     
    'Copie du code du module 2
        With ActiveWorkbook.VBProject.VBComponents("Module2").CodeModule
        S = .Lines(1, .CountOfLines)
        End With
     
    'Création du nom de la feuille
        A = Left(Cells(2, 4).Value, 6)
        B = Right(A, 2)
        N = Left(Cells(2, 1).Value, 4) & " SS " & B
     
    'Détermine le nombre de ligne non vide
        DernLig = Cells(Cells.Rows.Count, "A").End(xlUp).Row
     
    'Création de la nouvelle feuille
        Workbooks.Open ("C:\Users\Vivien\Desktop\VBA\SuiviDeProduction\Suivi_de_Production.xlsm")
        Sheets.Add After:=Sheets(Sheets.Count)
     
    'Coller les données
        Range("A1").Select
        ActiveSheet.Paste
     
    'Création de la colonne Ligne
        Range("A:A").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
        Range("A1").Value = "LIGNE"
        With Range("A1")
                .HorizontalAlignment = xlCenter
                .VerticalAlignment = xlBottom
                .WrapText = False
                .Orientation = 0
                .AddIndent = False
                .IndentLevel = 0
                .ShrinkToFit = False
                .ReadingOrder = xlContext
                .MergeCells = False
        Range("B1").Copy
        Range("A1").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Application.CutCopyMode = False
        End With
     
    'Création colonne poste 1
        Range("E1").Select
        ActiveCell.FormulaR1C1 = "Obj."
        Range("F1").Select
        ActiveCell.FormulaR1C1 = "Poste 1"
        With Range("E1:F1")
                .HorizontalAlignment = xlCenter
                .VerticalAlignment = xlBottom
                .WrapText = False
                .Orientation = 0
                .AddIndent = False
                .IndentLevel = 0
                .ShrinkToFit = False
                .ReadingOrder = xlContext
                .MergeCells = False
        Range("B1").Copy
        Range("E1:F1").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Application.CutCopyMode = False
        End With
     
    'Renomme la nouvelle feuille
        ActiveSheet.Name = (N)
     
    'Copie du code du module 2 dans la feuil1 (Liste)
        With Wbk.VBProject.VBComponents(Sheets(Sheets.Count)).CodeModule
        .AddFromString S
        End With
     
    'Ferme le fichier de suivi de prod
        Windows("Suivi_de_Production.xlsm").Activate
        ActiveWorkbook.Save
        ActiveWindow.Close
     
    End Sub
    Pour autre information, ce code marchait très bien lorsque la feuille était nommée directement (au lieu de "Sheets(Sheets.Count)").
    Mais "Sheets(Sheets.Count)" est la seule manière que j'ai trouvée pour copier le code sur la nouvelle feuille, c'est à dire la dernière créé, d'où cette fonction.
    J'ai pensé à la fonction activesheets.codename ou activesheet ou tout simplement la variable N (string) qui contient son nom créé également sur le même module à partir des données du tableau.

    Si quelqu'un voit d'où peut venir l'erreur je lui en serait très reconnaissant!

    Merci d'avance!

  2. #2
    Inactif  

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

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    J'ai comme l'impression que "la ligne en gras" a été "dégrasisée" en chemin. Pourrais-tu revenir avec le numéro de la ligne svp ?

  3. #3
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Bonsoir,


    combien de classeurs sont concernés par ton code ? plusieurs classeurs d'ouvert ?

    je ne vois aucune affectation de ta variable Wbk ...

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Ingénieur de production
    Inscrit en
    Juin 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur de production
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2015
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Bien vu bbil. Je n'avais pas affecté wbk... Un oubli de ma part lors d'une simplification du code.
    Cette erreur est maintenant résolue en ajoutant:
    Set Wbk = ActiveWorkbook
    juste avant.

    Une autre est apparue "Erreur d'execution: '13' , Incompatiblité de type." sur la ligne 80 dans le code non mis à jour joint à cette discussion.

    En fait j'ai un classeur excel A dans lequel je dépose un tableau.
    La macro une fois lancée me créé une nouvelle feuille dans le classeur B et y met en forme un nouveau tableau à partir du premier tout en y ajoutant une macro.

    Le classeur B ne doit pas être ouvert dans le code actuel. J'ajouterais la possibilité qu'il soit ouvert plus tard.

    Merci pour votre temps.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/05/2014, 19h24
  2. Erreur d'éxécution '91' variable objet ou variable de bloc with non définie
    Par abdelkarim_1987 dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 16/08/2013, 17h22
  3. Erreur 91 : variable objet ou variable de bloc with non définie
    Par blobsam dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2011, 17h19
  4. [XL-2007] Message d'erreur : Variable objet ou Variable de bloc With non définie
    Par toushusss dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/06/2011, 10h02
  5. erreur 91 variable objet ou variable de bloc with non définie
    Par ballantine's dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 03/12/2009, 16h41

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