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 de compilation Next sans For


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 112
    Points : 46
    Points
    46
    Par défaut Erreur de compilation Next sans For
    Bonjour,

    Je suis dans une feuille Excel dont je traite les données par le biais d'un tableau croisé dynamique créé dans le code.
    Une fois, le tableau créé et ça marche bien, je renomme la feuille du tableau en TAB_CROIS...

    Puis je dois filtrer mon champ "Semaine" sur un certain nombre de valeur par le bout de code ci-dessous. Mais VBA me sort une erreur sur le Next en me disant: "Erreur de compilation - Next sans For"

    Avez vous une idée ? Est ce l'action "With" qui crée un problème ? Où est mon erreur ?

    Merci de votre aide
    CH
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For i = 1 To y
            Sheets("TAB_CROIS").Select
            With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Semaine").PivotItems(Cells(9 + i, 1)).Visible = False
        Next

  2. #2
    Membre expérimenté
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    673
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 673
    Points : 1 580
    Points
    1 580
    Par défaut
    Bonjour,
    C'est à cause du "With" qui n'est pas fermé par en "End With".
    D'ailleurs, je crois qu'il ne sert à rien...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 112
    Points : 46
    Points
    46
    Par défaut
    Super merci, ça ne bloque plus là dessus... ça doit servir un peu quand même

    Je viens de relancer mon programme.

    Maintenant sur la ligne With, il me sort un

    "Impossible de lire la propriété PivotItems de la classe Pivot Field"

    A tout hasard, je mets le début du bout de code qui est avant pour la création de mon graphe croisé dynamique et du tableau associé... Ce n'est pas complet.

    Merci encore pour la réponse rapide...

    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
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
            "DATA!R1C1:R65536C" & z).CreatePivotTable TableDestination:="", _
            TableName:="Tableau croisé dynamique1", DefaultVersion:= _
            xlPivotTableVersion10
        ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
        ActiveSheet.Cells(3, 1).Select
        Charts.Add
        ActiveChart.Location Where:=xlLocationAsNewSheet
        With ActiveChart.PivotLayout.PivotTable.PivotFields("Semaine")
            .Orientation = xlRowField
            .Position = 1
        End With
        ActiveChart.PivotLayout.PivotTable.AddDataField ActiveChart.PivotLayout. _
            PivotTable.PivotFields("Heure"), "Somme de Heure", xlSum
        With ActiveChart.PivotLayout.PivotTable.PivotFields("Projet")
            .Orientation = xlColumnField
            .Position = 1
        End With
        With ActiveChart.PivotLayout.PivotTable.PivotFields("Code_tâche")
            .Orientation = xlPageField
            .Position = 1
        End With
    J'ai testé autre chose sur mon second problème lié au message initial.

    J'ai enlevé la boucle et pris une valeur existante dans mes données...

    ==> remplacer le Cells(9 + i, 1) par "2011S42"

    Et là il rechange l'erreur, passe à ma ligne de code suivante qui
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("GRAPHE").Activate
    et me laisse le message d'erreur suivant : " L'indice n'appartient pas à la sélection".

    Je reste preneur de vos idées.

  4. #4
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 906
    Points : 8 539
    Points
    8 539
    Par défaut
    Salut

    Comme dis plus haut par tedo01 placé comme il est ton With ne te sert strictement à rien, il doit même te générer une erreur. Si tu veux t'en convaincre regarde l'aide en cliquant sur With et en appuyant ensuite sur F1.
    Le With sert à éviter de répéter le "sujet" de tes ligne de code, la partie incluse dans la même ligne que le With sera placé devant les points laissés seuls et ceux entre With et End With.

    Pour ton second problème, as tu bien un onglet (une feuille) qui se nomme"Graphe" dans ton classeur actif?
    Attention avec les ActiveWorkbook, il vaut mieux pointer ton classeur dans une variable ou au pire utiliser ThisWorkbook si tu veux parler du classeur qui contient la macro. Avec ActiveWorkbook, si l'utilisateur trouve le temps de traitement trop long et va faire un tour sur un autre classeur... badaboum ta macro utilise le classeur actif et vient y inscrire des choses dessus (déroulement de ta macro).
    ++
    Qwaz

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 112
    Points : 46
    Points
    46
    Par défaut
    merci qwazerty
    J'ai fait un essai en virant le with sans la boucle for pour ne plus afficher la première valeur et ça marche. Et en utilisant ThisWorkbook.Sheets("Graphe").Activate ça marche aussi...

    Par contre, lorsque je veux remettre ma boucle qui tourne sur le contenu de plusieurs cellules, ça plante à nouveau sur la ligne ActiveSheet... ci dessous ma boucle For...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 1 To y
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Semaine").PivotItems(Cells(9 + i, 1)).Visible = False
    Next
    Une idée ?

    Merci encore

Discussions similaires

  1. [VBA Word] Next sans for
    Par Dobyan08 dans le forum VBA Word
    Réponses: 6
    Dernier message: 20/10/2016, 11h57
  2. [XL-2007] Erreur de compilation : Next sans For
    Par benjamin_malaussene dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/04/2014, 17h43
  3. [XL-2007] Erreur "NEXT sans FOR"
    Par ESVBA dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/03/2011, 00h10
  4. [XL-2007] Erreur next sans for, Bizarre!
    Par rvtoulon dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 05/10/2009, 17h19
  5. j'ai une erreur Next sans For
    Par Caps corp dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 22/08/2008, 15h10

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