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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé 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
    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")

  2. #2
    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
    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"

  3. #3
    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
    Essaye de mettre ton ActiveSheet.Paste avant le Sheets.Add.Name

  4. #4
    Membre éclairé 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
    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")

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

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

    Informations forums :
    Inscription : Janvier 2017
    Messages : 556
    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, 14h21
  2. Boucle While ne marche pas
    Par soltani.slim dans le forum Access
    Réponses: 2
    Dernier message: 23/06/2005, 10h41
  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, 08h53
  4. [langage] boucle "for" modification du pas
    Par K-ZimiR dans le forum Langage
    Réponses: 4
    Dernier message: 29/04/2004, 11h54
  5. [TTHREAD] ne termine pas sont exécution
    Par Bbenj dans le forum Langage
    Réponses: 4
    Dernier message: 02/08/2002, 16h42

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