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 :

la Boucle ne SE termine pas et s'arrête à Activeshhet.Paste [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif Avatar de Pittouti
    Homme Profil pro
    Consultant SAP
    Inscrit en
    Avril 2012
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant SAP
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2012
    Messages : 246
    Points : 257
    Points
    257
    Par défaut la Boucle ne SE termine pas et s'arrête à Activeshhet.Paste
    BOnjour,

    ci-dessous le code et je ne sais pas pourquoi la boucle ne se termine pas.

    NB: quand j'ai enlevé Activesheet.Pase la boucle fonctionne parfaitement.

    Le pessage d'erreur: Excel ne peut pas terminer cette tâche avec les ressources disponibles

    merci de votre aide.

    salutations
    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
    Sheets("GL").Select
        Range("A2").Select
        Sheets.Add.Name = "TCD"
        Sheets("GL").Select
        ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            "GL!R1C1:R3969C8", Version:=xlPivotTableVersion15).CreatePivotTable _
            TableDestination:="TCD!R1C1", TableName:="Tableau croisé dynamique2", _
            DefaultVersion:=xlPivotTableVersion15
        Sheets("TCD").Select
        Cells(1, 1).Select
        With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _
            "N° DE COMPTE")
            .Orientation = xlRowField
            .Position = 1
        End With
        Cells.Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
            Range("A1").Select
        Selection.AutoFilter
        ActiveSheet.Range("$A$1:$A$19").AutoFilter Field:=1, Criteria1:="=(vide)", _
            Operator:=xlOr, Criteria2:="=Total général"
        Range("A2:A190000").Select
        Selection.ClearContents
        ActiveSheet.Range("$A$1:$A$19").AutoFilter Field:=1
        Dim Ligne, xx As Integer
        Ligne = 2
        While Ligne <> 0
        Sheets("TCD").Select
        Cells(Ligne, 1).Select
        Selection.Copy
        Sheets("GL").Select
        Range("A1").Select
        ActiveSheet.Range("$A$1:$H$3969").AutoFilter Field:=1, Criteria1:= _
            Sheets("TCD").Cells(Ligne, 1).Value
            Sheets("GL").Select
        Cells.Select
        Selection.Copy
        Sheets.Add.Name = Sheets("TCD").Cells(Ligne, 1).Value
        ActiveSheet.Paste
        Ligne = Ligne + 1
        Wend
        MsgBox ("operation terminée")
    ________________________________________________________________________________________

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.
    Merci, c'est toujours sympa de recevoir des +1 de votre part

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    A jouer ainsi au yoyo à coups de select, activesheet, etc ... et à te promener comme tu le fais de feuille en feuille, vba ne sait plus où donner de la tête.
    Tout donne à penser que ta boucle s'applique à une autre feuille que celle concernée.
    Apprends à ne pas travailler ainsi, mais directement sur les objets
    Encore heureux, d'ailleurs, que cela s'arrête car ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Ligne = 2
        While Ligne <> 0
            ......
            ......
          Ligne = Ligne + 1
       Wend
    devrait être la cause d'une magnifique boucle sans fin.
    Je ne veux pas corriger un tel "code"
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  3. #3
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    Par défaut
    Essaye de mettre ton ActiveSheet.Paste avant le Sheets.Add.Name
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  4. #4
    Membre actif Avatar de Pittouti
    Homme Profil pro
    Consultant SAP
    Inscrit en
    Avril 2012
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant SAP
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2012
    Messages : 246
    Points : 257
    Points
    257
    Par défaut
    Bonjour,

    je me suis rendu compte d'une petite erreur sur la boucle et je l'ai corrigé mais le code ne fonctionne toujours pas !

    je vais expliqué un ce que je voudrai :

    1. J'ai un tableau avec plusieurs Lignes, la première colonne est N° de compte ( ce Numéro se répète plusieur Fois)
    2. à chaque fois je fais un tableau Croisé dynamique pour savoir le nombre de compte
    3. à ce moment là je commence ma boucle qui consiste à faire :



    revenir sur le tableau initial.
    exécuter un filtre sur le numéro de compte
    copier le résultat
    créer une nouvelle feuille avec ce Numéro de compte
    et coller le résultat.

    c'est tou ce que je veux réaliser.

    NB: si j'enlève la commande Activesheet.Paste, le code fonctionne parfaitement ==> il me fait le filtre et me crée les nouvelles feuilles mais sans le résultat

    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
    Sheets("GL").Select
        Range("A2").Select
        Sheets.Add.Name = "TCD"
        Sheets("GL").Select
        ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            "GL!R1C1:R3969C8", Version:=xlPivotTableVersion15).CreatePivotTable _
            TableDestination:="TCD!R1C1", TableName:="Tableau croisé dynamique2", _
            DefaultVersion:=xlPivotTableVersion15
        Sheets("TCD").Select
        Cells(1, 1).Select
        With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _
            "N° DE COMPTE")
            .Orientation = xlRowField
            .Position = 1
        End With
        Cells.Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
            Range("A1").Select
        Selection.AutoFilter
        ActiveSheet.Range("$A$1:$A$19").AutoFilter Field:=1, Criteria1:="=(vide)", _
            Operator:=xlOr, Criteria2:="=Total général"
        Range("A2:A190000").Select
        Selection.ClearContents
        ActiveSheet.Range("$A$1:$A$19").AutoFilter Field:=1
        Dim Ligne, xx As Integer
        Ligne = 2
        While Sheets("TCD").Cells(Ligne, 1).Value <> ""
        Sheets("TCD").Select
        Cells(Ligne, 1).Select
        Selection.Copy
        Sheets("GL").Select
        Range("A1").Select
        ActiveSheet.Range("$A$1:$H$3969").AutoFilter Field:=1, Criteria1:= _
            Sheets("TCD").Cells(Ligne, 1).Value
            Sheets("GL").Select
        Cells.Select
        Selection.Copy
        Sheets.Add.Name = Sheets("TCD").Cells(Ligne, 1).Value
        ActiveSheet.Paste
        Ligne = Ligne + 1
        Wend
        MsgBox ("operation terminée")
    ________________________________________________________________________________________

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.
    Merci, c'est toujours sympa de recevoir des +1 de votre part

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2017
    Messages
    529
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2017
    Messages : 529
    Points : 324
    Points
    324
    Par défaut
    Bonjour Pittouti et les autres membre du groupe


    Ce que je déduis en voyant ton code c'est que tu as utilisé l'enregistreur de macro.

    L'enregistreur de macro ne simplifie pas le code. Il peut mettre en 3 étape ce qui peut être fais en un.


    Donc une fois que ton code sera simplifié, je vais etre en mesure de t'aidé. Également tu vas gagné du temps d'exécution. JE crois que c'est un peu ce que unparia (que je salut) veux dire par un "tel" code


    Également "pointe sur une feuille au début" qui est totalement inutile donc éviter de pointer sur une feuille aller sur un autre pour aller par la suite sur la premiere.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/07/2005, 15h21
  2. Boucle While ne marche pas
    Par soltani.slim dans le forum Access
    Réponses: 2
    Dernier message: 23/06/2005, 11h41
  3. Select qui boucle ou se termine par un Ora-01460
    Par PatriceP dans le forum Oracle
    Réponses: 4
    Dernier message: 29/10/2004, 09h53
  4. [langage] boucle "for" modification du pas
    Par K-ZimiR dans le forum Langage
    Réponses: 4
    Dernier message: 29/04/2004, 12h54
  5. [TTHREAD] ne termine pas sont exécution
    Par Bbenj dans le forum Langage
    Réponses: 4
    Dernier message: 02/08/2002, 17h42

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