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'éxécution '91' variable objet ou variable de bloc with non définie


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2015
    Messages : 41
    Par défaut Erreur d'éxécution '91' variable objet ou variable de bloc with non définie
    Bonjour les amis,

    Le fichier sur lequel je travail est finalisé pratiquement, j'ai un plantage à la fin du traitement (Erreur d'éxécution '91' variable objet ou variable de bloc with non définie), je ne vois vraiment pas à quoi ça correspond. Si quelqu'un pourrais m'aider ça serait magnifique

    Voilà le code :

    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
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
     
     
    Sub ExtraireParGroupeColonneB()
     
     
    Dim O As Long, NbLg As Long
    Dim n As Integer
    Dim H1 As Worksheet
    Dim Mondico As Object
    Dim Tablo
    Dim Interdits
    Dim ligne
     
    Call RegrouperLesBD
     
      Interdits = Array("&", ":", "/", "\", "~?", "~*", "[", "]", Chr(34))
     
      Application.ScreenUpdating = False
     
      Application.DisplayAlerts = False
     
     
      Application.DisplayAlerts = True
     
      Call SupprimeFeuille
     
      Set H1 = Sheets("BD")
      If H1.FilterMode = True Then H1.ShowAllData
      NbLg = H1.Range("A" & Rows.Count).End(xlUp).Row
     
    rep = InputBox("Choisir la lettre de la colonne pour la création de fiches", "CREATION DE FICHES PAR GROUPES", "B")
     
      H1.Columns(rep).Copy H1.Columns("O")
     
      With H1.Range("O2:O" & NbLg)
        For n = 0 To UBound(Interdits)
          .Replace what:=Interdits(n), replacement:="_", lookat:=xlPart
        Next n
     
      End With
     
      Set Mondico = CreateObject("Scripting.dictionary")
      For O = 2 To NbLg
        Mondico(H1.Range("O" & O).Value) = ""
      Next O
     
      H1.Range("O1:P1") = "XYZ"
     
      Tablo = Mondico.keys
      For n = 0 To UBound(Tablo)
        Sheets.Add(after:=Sheets(Sheets.Count)).Name = Tablo(n)
        Sheets("Modèle").UsedRange.Copy
        Sheets(Tablo(n)).Range("A1").PasteSpecial
     
     
        With Sheets(Tablo(n))
          .Range("A2") = Tablo(n)
          H1.Range("P2") = Tablo(n)
     
            For Each cel In H1.Range("G2:G" & NbLg) 'pour chaque cellule de G2 à G_DernièreLigne
                r = cel.Row
                noms = H1.Range("C" & r)
                If H1.Range(rep & r) = Tablo(n) Then
                    c = .Range("A1000").End(xlUp).Row + 1
                    If .Range("A9") = "" Then
                        H1.Range("C" & r & ":H" & r).Copy 'Copie de C à H feuille BD
                        .Range("A" & c).PasteSpecial xlPasteValues 'Colle depuis A feuille modèle
                    End If
     
                    If Not .Range("E9:E" & c).Find(cel) Is Nothing And Not .Range("A9:A" & c).Find(noms) Is Nothing Then
                    'Si le numero de pièce existe déjà dans la feuille modèle alors...
                    Set ligne = .Range("E9:E" & c).Find(cel) 'on trouve la ligne correspondante
                        If Not ligne Is Nothing And .Range("A" & ligne.Row) <> noms Then
                            Flig = ligne.Row
                            Do
                                cel.Value = cel
                                Set ligne = .Range("E9:E" & c).FindNext(.Range("E" & Flig))
                                ligne = ligne.Row
                            Loop While ligne = Flig And .Range("A" & ligne) <> noms
                        Else
                        ligne = ligne.Row
                        End If
    remp:
                        'On prend chaque cas de compte et on vient mettre le débit et crédit dans les colonnes correspondantes
                        If H1.Range("A" & r) = "VACANCES - COLOS" Then .Range("G" & ligne) = .Range("G" & ligne) + H1.Range("I" & r): .Range("H" & ligne) = .Range("H" & ligne) + H1.Range("J" & r)
                        If H1.Range("A" & r) = "ALIMENTATION A L'EXTERIEUR." Then .Range("I" & ligne) = .Range("I" & ligne) + H1.Range("I" & r): .Range("J" & ligne) = .Range("J" & ligne) + H1.Range("J" & r)
                        If H1.Range("A" & r) = "AUTRES REMB.FRAIS GR 1" Then .Range("N" & ligne) = .Range("N" & ligne) + H1.Range("J" & r): .Range("M" & ligne) = .Range("M" & ligne) + H1.Range("I" & r)
                    Else
                        H1.Range("C" & r & ":H" & r).Copy
                        .Range("A" & c).PasteSpecial xlPasteValues
                        ligne = c
                        GoTo remp
                    End If
     
                End If
     
     
            Next cel
     
               ActiveWindow.DisplayOutline = False
     
     
     
        End With
     
          'ICI AJUSTER LIGNES ET COLONNES
        Call MiseEnPageFeuilleModeleColonnesEtLignes
     
      Next n
     
      H1.Columns("O:P").Clear
      H1.Select
     
      Call consolidation
     
     
    End Sub

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Stéphanie57 Voir le message
    j'ai un plantage à la fin du traitement
    Si tu pouvais être un poil plus précise en donnant la ligne de code signalée par le débugueur, ce serait quand même plus pratique.

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2015
    Messages : 41
    Par défaut
    Ligne qui pose soucis :

    ligne = ligne.Row

    Lorsque je fais passer la souris dessus, il me met, ligne=nothing

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Stéphanie57 Voir le message
    Ligne qui pose soucis :
    ligne = ligne.Row
    Row est de type Long.
    L'objet parent doit être de type Range.

    Il est donc impossible qu'on puisse matérialiser par la même variable le parent de Row et son résultat.

    Déclare te type de tes variables et les explication du débugueur pour ce type d'erreur seront plus claires.

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2015
    Messages : 41
    Par défaut fichier trop gros
    Je vais retravailler le fichier pour qu'il puisse être téléchargeable, il est clair que comme ça, ce n'est pas évident à traiter.

    A très vite les amis

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2015
    Messages : 41
    Par défaut En image c'est peut être plus compréhensible
    L'idée de ce module qui ne fonctionne pas comme je le souhaite, est qu'à partir de l'onglet "BD" il créer les fiches automatiquement et que surtour il réparti dans la colonne vacances colo les chiffres correspondant, ensuite dans la colonne alimentation exterieur, il recherche le n° de la pièce correspondant à la colonne vacances colo et qu'il le met bien dans la bonne ligne, et enfin pour la 3e colonne, il recherche aussi le n° de pièce correspondant à la colonne vacances colo et qu'il met le chiffre correspondant.

    il y a peut être une simple adaptation à faire...

    Il est impossible de le faire avec l'action copier coller.

    Pouvez-vous m'aider svp ?

    Voici la capture d'écran de ce que je souhaite avoir en automatique :

    Nom : ECRAN 3.JPG
Affichages : 529
Taille : 164,5 Ko

    Voici le code :


    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
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
     
     
     
    Sub ExtraireParGroupeColonneB()
    Dim O As Long, NbLg As Long
    Dim n As Integer
    Dim H1 As Worksheet
    Dim Mondico As Object
    Dim Tablo
    Dim Interdits
    Dim ligne
     
      Interdits = Array("&", ":", "/", "\", "~?", "~*", "[", "]", Chr(34))
     
      Application.ScreenUpdating = False
     
      Application.DisplayAlerts = False
     
     
      Application.DisplayAlerts = True
     
     
     
      Set H1 = Sheets("BD")
      If H1.FilterMode = True Then H1.ShowAllData
      NbLg = H1.Range("A" & Rows.Count).End(xlUp).Row
     
    rep = InputBox("Choisir la lettre de la colonne pour la création de fiches", "CREATION DE FICHES PAR GROUPES", "B")
     
      H1.Columns(rep).Copy H1.Columns("O")
     
      With H1.Range("O2:O" & NbLg)
        For n = 0 To UBound(Interdits)
          .Replace what:=Interdits(n), replacement:="_", lookat:=xlPart
        Next n
     
      End With
     
      Set Mondico = CreateObject("Scripting.dictionary")
      For O = 2 To NbLg
        Mondico(H1.Range("O" & O).Value) = ""
      Next O
     
      H1.Range("O1:P1") = "XYZ"
     
      Tablo = Mondico.keys
      For n = 0 To UBound(Tablo)
        Sheets.Add(after:=Sheets(Sheets.Count)).Name = Tablo(n)
        Sheets("Modèle").UsedRange.Copy
        Sheets(Tablo(n)).Range("A1").PasteSpecial
     
     
        With Sheets(Tablo(n))
          .Range("A2") = Tablo(n)
          H1.Range("P2") = Tablo(n)
     
            For Each cel In H1.Range("G2:G" & NbLg) 'pour chaque cellule de G2 à G_DernièreLigne
                r = cel.Row
                noms = H1.Range("C" & r)
                If H1.Range(rep & r) = Tablo(n) Then
                    c = .Range("A1000").End(xlUp).Row + 1
                    If .Range("A9") = "" Then
                        H1.Range("C" & r & ":H" & r).Copy 'Copie de C à H feuille BD
                        .Range("A" & c).PasteSpecial xlPasteValues 'Colle depuis A feuille modèle
                    End If
     
                    If Not .Range("E9:E" & c).Find(cel) Is Nothing And Not .Range("A9:A" & c).Find(noms) Is Nothing Then
                    'Si le numero de pièce existe déjà dans la feuille modèle alors...
                    Set ligne = .Range("E9:E" & c).Find(cel) 'on trouve la ligne correspondante
                        If Not ligne Is Nothing And .Range("A" & ligne.Row) <> noms Then
                            Flig = ligne.Row
                            Do
                                cel.Value = cel
                                Set ligne = .Range("E9:E" & c).FindNext(.Range("E" & Flig))
                                ligne = ligne.Row
                            Loop While ligne = Flig And .Range("A" & ligne) <> noms
                        Else
                        ligne = ligne.Row
                        End If
    remp:
                        'On prend chaque cas de compte et on vient mettre le débit et crédit dans les colonnes correspondantes
                        If H1.Range("A" & r) = "VACANCES - COLOS" Then .Range("G" & ligne) = .Range("G" & ligne) + H1.Range("I" & r): .Range("H" & ligne) = .Range("H" & ligne) + H1.Range("J" & r)
                        If H1.Range("A" & r) = "ALIMENTATION A L'EXTERIEUR." Then .Range("I" & ligne) = .Range("I" & ligne) + H1.Range("I" & r): .Range("J" & ligne) = .Range("J" & ligne) + H1.Range("J" & r)
                        If H1.Range("A" & r) = "AUTRES REMB.FRAIS GR 1" Then .Range("N" & ligne) = .Range("N" & ligne) + H1.Range("J" & r): .Range("M" & ligne) = .Range("M" & ligne) + H1.Range("I" & r)
                    Else
                        H1.Range("C" & r & ":H" & r).Copy
                        .Range("A" & c).PasteSpecial xlPasteValues
                        ligne = c
                        GoTo remp
                    End If
     
                End If
     
     
            Next cel
     
               ActiveWindow.DisplayOutline = False
     
     
     
        End With
     
          'ICI AJUSTER LIGNES ET COLONNES
     
        Call MiseEnPageFeuilleModeleColonnesEtLignes
     
      Next n
     
      H1.Columns("O:P").Clear
      H1.Select
     
     
    End Sub

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Qu'entends-tu pas "créer les fiches". Il y a un filtre à appliquer? Un regroupement? Une simple permutation de colonnes et quelques formules?

    Première remarque: travailler avec des tableaux structurés. Ce sera plus simple à manipuler, et en Excel, et en VBA.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  8. #8
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2015
    Messages : 41
    Par défaut création des fiches
    Qu'entends-tu pas "créer les fiches".

    Pour moi la créatoin de fiches c'est l'extraction de données depuis une base de donnée pour créer d'autres onglets bien précis.

    exemple : Nous travaillons dans un centre éducatif pour enfants, dans notre établissement, il existe plusieurs lieu de vie, les enfants de 5 à 10 ans, les enfants de 11 à 15 ans et les enfants de 16 ans à 17 ans, il existe donc 3 groupes de vie. Ce que je souhaite avoir dans la création de fiches, c'est les dépenses de plusieurs comptes comptables répartient pour les 3 groupes de vie, donc 3 onglets, un onglet groupe de vie 1, un onglet groupe de vie 2 et un onglet groupe de vie 3.

    Il y a effectivement un regroupement à faire, mais la complication est dans le regroupement des lignes comptables avec le point commun qui est le numéro de la pièce comptable, je m'expliques :

    exemple d'écriture comptable : N° pièce comptable ACE10/015 - Groupe de vie : ARTISTES

    Au débit : compte vacance pour 100 euros
    compte alimentation pour 30 euros

    Au crédit : compte fournisseur pour 90 euros
    compte Rembt Caf pour 40 euros

    J'aurai donc dans l'onglet ARTISTES :

    Nom : ECRAN 4.JPG
Affichages : 679
Taille : 125,9 Ko



    Première remarque: travailler avec des tableaux structurés. Ce sera plus simple à manipuler, et en Excel, et en VBA.

    Que proposes-tu en excel et en VBA ?

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Question présentation, ce n'est pas toujours top, mais les TCD permettraient une approche assez rapide à mettre en place.

    Sinon, on peut envisager de boucler. De combien de lignes se compose le tableau de base?

    Une autre approche serait d'extraire les pièces sans doublon, de les placer dans le tableau de présentation et de remplir les autres colonnes avec INDEX/EQUIV en matricielle. Cela pourrait être assez rapide en VBA. Après, en fonction du compte, on filtre sur la colonne et on n'a ainsi qu'un seul tableau de résultat à adapter par filtre pour la présentation.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  10. #10
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2015
    Messages : 41
    Par défaut TCD
    Je n'ai jamais été à l'aise avec les TCD, je préfère la seconde proposition, boucler pour enfin boucler le fichier

    ta logique me convient, extraire les sans doublon...

    Citation Envoyé par Pierre Fauconnier Voir le message
    Salut.

    Question présentation, ce n'est pas toujours top, mais les TCD permettraient une approche assez rapide à mettre en place.

    Sinon, on peut envisager de boucler. De combien de lignes se compose le tableau de base?

    Une autre approche serait d'extraire les pièces sans doublon, de les placer dans le tableau de présentation et de remplir les autres colonnes avec INDEX/EQUIV en matricielle. Cela pourrait être assez rapide en VBA. Après, en fonction du compte, on filtre sur la colonne et on n'a ainsi qu'un seul tableau de résultat à adapter par filtre pour la présentation.

  11. #11
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Je te propose une solution qui s'appuie sur les propriétés des tableaux structurés, notamment
    • le fait qu'une formule peut utiliser des références structurées;
    • que cette référence peut être utilisée en VBA pour borner rapidement;
    • qu'une formule dans une colonne se propage aux nouvelles lignes;
    • que si l'on supprime les lignes du tableau, Excel mémorise la formule et la restitue lors de l'ajout de nouvelles lignes.



    Sur base de cela, on créer les formules en Excel dans le tableau final, puis on utilise un code qui
    • supprimer les lignes du tableau final;
    • ajoute toutes les pièces;
    • supprime les doublons.



    La mécanique des tableaux structurés fait le reste.

    Voici les formules à utiliser dans le tableau. J'ai appelé le tableau source t_Mouvements et le tableau final t_Analyse. Les formules illustrées doivent être recopiées dans les bonnes colonnes par copier-coller (pas par drag&drop!!) et les noms des colonnes doivent être adaptées. Après que ce décor soit planté, le code "métier" tient en trois lignes (avec quelques lignes en plus pour accélérer si gros tableau)


    Nom : stéf1.png
Affichages : 530
Taille : 50,0 Ko



    Nom : Stéf2..png
Affichages : 508
Taille : 47,6 Ko





    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
     
    Sub ClearTable(TableName As String)
      If Not Range(TableName).ListObject Is Nothing Then
        If Range(TableName).ListObject.ListRows.Count > 0 Then _
          Range(TableName).ListObject.DataBodyRange.Delete
      End If
    End Sub
     
    Sub Treatment()
      Dim Calculation As XlCalculation
     
      On Error GoTo EndHandler
     
      Calculation = Application.Calculation
      Application.ScreenUpdating = False
     
      ClearTable "t_Analyse"
      Range("t_Mouvements[Pièce]").Copy Destination:=Range("t_Analyse[Pièce]")
      Range("t_Analyse").RemoveDuplicates Columns:=Range("t_Analyse").ListObject.ListColumns("Pièce").Index, Header:=xlYes
     
    EndHandler:
      Application.Calculation = Calculation
      Application.ScreenUpdating = False
      If Err.Number <> 0 Then MsgBox "Erreur durant le traitement", vbExclamation
    End Sub
    [EDIT] Si, pour une raison ou une autre, tu ne peux pas avoir un tableau structuré pour présenter l'analyse, nous devrons ajouter quelques lignes de code pour ajouter les formules après la suppression des doublons.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  12. #12
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2015
    Messages : 41
    Par défaut suite
    Tout d'abord Merci infiniment pour avoir pris le temps de travailler dessus, je vais regarder et tester, je reviens vers toi dès que c'est fait.

    Merci encore

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