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 sur code pour supprimer et coller des données dans une plage dynamique


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Par défaut Erreur sur code pour supprimer et coller des données dans une plage dynamique
    Bonjour le forum

    J'ai essayé de réaliser un code (déduction faite d'un autre code qui m'a été proposé) mais il y'a un message d'erreur (référence incorrecte ou non qualifiée).
    Cette partie du code est directement soulignée Si une solution venait à être trouvée pour l'erreur signalée, je pense pouvoir l'adapter au reste du code car presque identique.

    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
    Sub Gestion_Supr_collage()
     
    'Supprimer la plage du bilan S-2
     
        With ThisWorkbook.Worksheets("BILAN_S-2").Range("A7", .[K7].End(xlDown)).EntireRow.Delete
     
        End With
     
    '------------------------------------------
     
    'copier le bilan S-1 dans la feuille BILAN_S-2
     
        With ThisWorkbook.Worksheets("BILAN_S-1").Range("A6", .[K6].End(xlDown)).Copy
     
        .Worksheets("BILAN_S-2").[A6]
     
        End With
     
    '-------------------------------------------
     
    'Supprimer la plage du bilan S-1
     
        With ThisWorkbook.Worksheets("BILAN_S-1").Range("A6", .[K6].End(xlDown)).EntireRow.Delete
     
        End With
     
    '------------------------------------------
     
    'copier le bilan S dans la feuille BILAN_S-1
     
        With ThisWorkbook.Worksheets("BILAN_S-1").Range("A6", .[K6].End(xlDown)).Copy
     
        .Worksheets("BILAN_S-1").[A6]
     
        End With
     
    '-----------------------------------------------------------
     
        With ThisWorkbook.Worksheets("BILAN_S")
     
            .Range("A7", .[K7].End(xlDown)).EntireRow.Delete
     
        End With
     
        With Workbooks("Traitement_Bilan_Agences_2018.xlsm").Worksheets("CENTRALISATION")
     
            .Range("B2", .[J2].End(xlDown)).Copy ThisWorkbook.Worksheets("BILAN_S").[C6]
     
        End With
     
        With Workbooks("Traitement_Bilan_Agences_2018.xlsm").Worksheets("CENTRALISATION")
     
            .Range("A2", .[A2].End(xlDown)).Copy ThisWorkbook.Worksheets("BILAN_PERIODE").[A6]
     
        End With
     
     
     
        'sh.Range("A1").Select
     
     
     
    End Sub
    Edit : je viens d'enlever le point (.) derrière le k et l'erreur n'est plus signalée.
    Pensez-vous que c'est la caude du débogage?

  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
    A mon avis, tu n'as pas compris à quoi sert une structure With et comment ça s'utilise.
    https://msdn.microsoft.com/en-us/VBA...with-statement

  3. #3
    Membre éclairé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Par défaut
    Bonsoir Menhir et le forum

    Merci pour votre lien.
    Je sais que lorsqu'on utilise with, les objets doivent comporter un point avant(.).
    Sans mentir je n'ai pas vu la cause de l'erreur signalée et j'ai voulu tâtonner pour voir ce que ça va donner.
    Merci de m'aider à débloquer la situation.

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Le point seul doit être utilisé après la ligne With et non pas dedans !   Voir l'aide VBA …

    P'tite question :   à quoi peuvent bien servir les lignes de code n° 49 & 51 ?!

    Rappel des usages de ce forum :
    ___________________________________________________________________________________________________________

         Merci de cliquer sur en bas à droite de chaque message ayant aidé puis sur pour clore cette discussion …

  5. #5
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 345
    Par défaut
    [QUOTE=capi81;10120007]
    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
     
     
        With ThisWorkbook.Worksheets("BILAN_S-2")
     
                .Range("A7", .[K7].End(xlDown)).EntireRow.Delete
     
        End With
     
    Ou
     
        With ThisWorkbook
     
                .Worksheets("BILAN_S-2").Range("A7", .Worksheets("BILAN_S-2").[K7].End(xlDown)).EntireRow.Delete
     
        End With

  6. #6
    Membre éclairé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Par défaut
    Bonsoir Marc et le forum

    Le point seul doit être utilisé après la ligne With et non pas dedans ! Voir l'aide VBA …
    J'ai pas bien compris...pouvez-vous en dire un peu plus pour faciliter la compréhension.
    Je parcours actu l'aide vba pour comprendre aussi.

    P'tite question : à quoi peuvent bien servir les lignes de code n° 49 & 51 ?!
    J'explique un peu pourquoi la macro a été conçu ainsi:
    J'ai une plage générale (A:J).
    Les premiers éléments de cette plage à copier sont C:J et la cellule de destination est BILAN_S!C6 de thisworkbook d'ou ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With Workbooks("Traitement_Bilan_Agences_2018.xlsm").Worksheets("CENTRALISATION")
     
            .Range("B2", .[J2].End(xlDown)).Copy ThisWorkbook.Worksheets("BILAN_S").[C6]
     
        End With
    ensuite je dois copier A2:A et le coller dans BILAN_S!A6 de thisworkbook d'ou le 2eme code ci-dessous:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With Workbooks("Traitement_Bilan_Agences_2018.xlsm").Worksheets("CENTRALISATION")
     
            .Range("A2", .[A2].End(xlDown)).Copy ThisWorkbook.Worksheets("BILAN_PERIODE").[A6]
     
        End With
    Au juste Comment devrais-je procéder pour arriver à mes fins tout en optimisant le code?

  7. #7
    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 capi81 Voir le message
    Je sais que lorsqu'on utilise with, les objets doivent comporter un point avant(.).
    Mettre une structure With sans rien dedans (comme tu as fait aux lignes 5 à 7, c'est comme avoir un aquarium sans poisson.

    De plus, on ne mets quasiment jamais de méthode dans un With vu que la plupart des méthodes ne renvoient pas d'objets.

    Pour ce qui est de ton erreur, la demande est incompréhensible : tu dis que l'erreur est au niveau de [K7] or cette séquence n'apparait nulle part dans ton code.

  8. #8
    Membre éclairé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Par défaut
    Menhir:je lis souvent les cours vba mais certaines choses échappent à ma compréhension.
    Je souhaite en français facile inspiration faite dans mon code m'expliquer ce que vous avez voulu dire ici
    De plus, on ne mets quasiment jamais de méthode dans un With
    Quel est l'objet que j'ai mis dans le with (est-ce le thisworkbook?)?
    Mettre une structure With sans rien dedans
    Cela va beaucoup m'aider.
    merci de me comprendre car c'est souvent pas facile les lectures théoriques dans l'aide vba (tu peux lire sans rien comprendre).

  9. #9
    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 capi81 Voir le message
    Quel est l'objet que j'ai mis dans le with (est-ce le thisworkbook?)?
    Un Objet VBA peut avoir deux sortes de membres : les méthodes et les propriétés.
    pour simplifier, on peut dire que les méthodes réalisent des action alors que les propriétés stockent des valeurs.

    Un With n'a d'intérêt que si l'élément qu'on y intègre renvoie un objet auquel vont se référer les objet contenus dans la structure With / End With par l'intermédiaire du "." placé devant.
    Or, généralement, ce sont les propriétés qui renvoient des objets. Il y a peu de méthodes qui en renvoie. En tout cas, des méthodes comme Delete ou Copy n'en renvoient pas. Il est donc impropre de les avoir utiliser comme élément de With.

  10. #10
    Membre éclairé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Par défaut
    Bonsoir à tous

    Aziz1015 : je m'excuse d'avoir pas donné suite à votre solution.
    Elle m'a échappé.
    Menhir : merci pour votre disponibilité et surtout pour les explications que vous venez de me donner.
    Ci-dessous ce que j'ai réamenagé pour appréciation:
    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
    Sub Gestion_Supr_collage()
    'Supprimer la plage du bilan S-2
        With ThisWorkbook.Worksheets("BILAN_S-2")
            .Range("A7", .[K7].End(xlDown)).EntireRow.Delete
        End With
    '------------------------------------------
    'copier le bilan S-1 dans la feuille BILAN_S-2
        With ThisWorkbook
            .Worksheets("BILAN_S-1").Range("A6", .[K6].End(xlDown)).Copy
            .Worksheets("BILAN_S-2").[A6].Paste
        End With
    '-------------------------------------------
    'Supprimer la plage du bilan S-1
        With ThisWorkbook
            .Worksheets("BILAN_S-1").Range("A6", .[K6].End(xlDown)).EntireRow.Delete
        End With
    '------------------------------------------
    'copier le bilan S dans la feuille BILAN_S-1
        With ThisWorkbook.Worksheets("BILAN_S-1").Range("A6", .[K6].End(xlDown)).Copy Worksheets("BILAN_S-2").[A6]
        End With
    '-----------------------------------------------------------
        With ThisWorkbook.Worksheets("BILAN_S")
            .Range("A7", .[K7].End(xlDown)).EntireRow.Delete
        End With
        With Workbooks("Traitement_Bilan_Agences_2018.xlsm")
            .Worksheets("CENTRALISATION").Range("B2", .Worksheets("CENTRALISATION").[J2].End(xlDown)).Copy ThisWorkbook.Worksheets("BILAN_S").[C6]
        End With
        With Workbooks("Traitement_Bilan_Agences_2018.xlsm")
            .Worksheets("CENTRALISATION").Range("A2", .Worksheets("CENTRALISATION").[A2].End(xlDown)).Copy ThisWorkbook.Worksheets("BILAN_S").[A6]
        End With
     
    End Sub
    Je viens d'exécuter la macro mais elle tourne pour le moment car je travaille sur des tableau dynamique(mise sous forme de tableau comportant des données volumineuses (3000 lignes de 3 tableaux).
    Est-ce que mon code semble correct sinon merci de faire une proposition sur comment je devrais m'y prendre pour bien faire et au besoin optimiser mon code pour accelerer le traitement.

  11. #11
    Membre éclairé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Par défaut
    Menhir, Marc-L dites moi au moins quelque chose.

  12. #12
    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
    Tu veux savoir si ton code est correct ? Fais le tourner.
    S'il fait ce que tu veux, c'est qu'il est correcte.
    S'il ne fait pas ce que tu veux, décrit le problème.

    Mais balancer comme ça un code sans plus de description et demander qu'on te le vérifie, c'est vraiment prendre les membres de ce forum pour tes domestiques.

Discussions similaires

  1. Réponses: 7
    Dernier message: 31/08/2017, 03h12
  2. [AC-2010] Erreur pour supprimer des données dans une table liée
    Par marieo dans le forum Access
    Réponses: 2
    Dernier message: 19/03/2016, 10h00
  3. [XL-2013] Erreur sur code pour copier-coller en valeur
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/01/2015, 09h55
  4. [XL-2007] Adapter code pour coller des données dans disq C
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/03/2012, 13h50
  5. Copier/coller des données dans une appli GWT
    Par yann1610 dans le forum GWT et Vaadin
    Réponses: 1
    Dernier message: 01/12/2010, 19h00

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