XLS 2010 - Un problème de boucle sur des tcd
Fermé
ap49
Messages postés
8
Date d'inscription
jeudi 29 août 2013
Statut
Membre
Dernière intervention
2 octobre 2013
-
Modifié par ap49 le 29/08/2013 à 09:52
ap49 Messages postés 8 Date d'inscription jeudi 29 août 2013 Statut Membre Dernière intervention 2 octobre 2013 - 29 août 2013 à 18:54
ap49 Messages postés 8 Date d'inscription jeudi 29 août 2013 Statut Membre Dernière intervention 2 octobre 2013 - 29 août 2013 à 18:54
A voir également:
- XLS 2010 - Un problème de boucle sur des tcd
- Tcd excel - Guide
- Clé activation office 2010 gratuit - Télécharger - Sécurité
- Xls viewer - Télécharger - Tableur
- Telecharger word 2010 - Télécharger - Traitement de texte
7 réponses
Zoul67
Messages postés
1959
Date d'inscription
lundi 3 mai 2010
Statut
Membre
Dernière intervention
30 janvier 2023
149
Modifié par Zoul67 le 29/08/2013 à 10:50
Modifié par Zoul67 le 29/08/2013 à 10:50
Bonjour,
C'est étrange ; chez moi, il n'y a pas d'erreur (j'ai fait des TCD très légers, mais le principe y est). Si tu désélectionnes "à la main", Excel le tolère ? Peux-tu fournir ton fichier sur cjoint.com ?
Par ailleurs si tu as beaucoup de données, j'aurais tendance à plutôt écrire :
pour me passer des contrôles avec If qui ralentissent la macro.
A+
C'est étrange ; chez moi, il n'y a pas d'erreur (j'ai fait des TCD très légers, mais le principe y est). Si tu désélectionnes "à la main", Excel le tolère ? Peux-tu fournir ton fichier sur cjoint.com ?
Par ailleurs si tu as beaucoup de données, j'aurais tendance à plutôt écrire :
On Error Resume Next For Each CHAMP In TCD.PivotFields CHAMP.PivotItems("(blank)").Visible=False CHAMP.PivotItems("""").Visible=False Next CHAMP On Error GoTo 0
pour me passer des contrôles avec If qui ralentissent la macro.
A+
ap49
Messages postés
8
Date d'inscription
jeudi 29 août 2013
Statut
Membre
Dernière intervention
2 octobre 2013
29 août 2013 à 10:44
29 août 2013 à 10:44
Je vais essayer de suite ta solution !
j'ai actualisé mon premier post, le fichier est sur cjoint avec le lien.
Est ce que ca pourrait venir du fait qu'à un moment donné dans mes manip j'ai fait une erreur de code et au lieux d'écrire p.Visible = False j'ai écrit p.Value = False (ou True) ? Et du coup il ne reconnait plus (blank) et "" comme du texte mais des bouléens ou quelque chose du genre ?
Et si oui, que faire ^^
merci de ton aide, je reviens dès que j'ai testé ton code
j'ai actualisé mon premier post, le fichier est sur cjoint avec le lien.
Est ce que ca pourrait venir du fait qu'à un moment donné dans mes manip j'ai fait une erreur de code et au lieux d'écrire p.Visible = False j'ai écrit p.Value = False (ou True) ? Et du coup il ne reconnait plus (blank) et "" comme du texte mais des bouléens ou quelque chose du genre ?
Et si oui, que faire ^^
merci de ton aide, je reviens dès que j'ai testé ton code
Zoul67
Messages postés
1959
Date d'inscription
lundi 3 mai 2010
Statut
Membre
Dernière intervention
30 janvier 2023
149
29 août 2013 à 10:49
29 août 2013 à 10:49
Je me suis trompé dans le code, il ne doit plus y avoir de p. J'ai corrigé dans https://forums.commentcamarche.net/forum/affich-28608242-xls-2010-un-probleme-de-boucle-sur-des-tcd#1
Zoul67
Messages postés
1959
Date d'inscription
lundi 3 mai 2010
Statut
Membre
Dernière intervention
30 janvier 2023
149
29 août 2013 à 10:57
29 août 2013 à 10:57
J'ai testé ta macro avec ton fichier... elle ne me renvoie pas d'erreur :-/ (Excel2010 également)
ap49
Messages postés
8
Date d'inscription
jeudi 29 août 2013
Statut
Membre
Dernière intervention
2 octobre 2013
29 août 2013 à 11:00
29 août 2013 à 11:00
Avec ce que tu m'as donné comme code, chez moi ca tourne sans interruption depuis quelques minutes déjà !
Sachant que mon fichier est le même que celui de cjoint, mais avec des onglets en plus, ce qui ne devrait rien changer ...
Sachant que mon fichier est le même que celui de cjoint, mais avec des onglets en plus, ce qui ne devrait rien changer ...
ap49
Messages postés
8
Date d'inscription
jeudi 29 août 2013
Statut
Membre
Dernière intervention
2 octobre 2013
29 août 2013 à 11:10
29 août 2013 à 11:10
En fait la macro ne bug pas si on laisse On Error Resume Next, mais elle ne fait rien de ce qui est demandé, elle ne décoche pas les vides si il y en a.
mais si je l'enlève, ca ne marche pas, ''erreur 1004, impossible de définir la propriété PivotItems de la classe PivotField"
(à la ligne : CHAMP.PivotItems("""").Visible = False, ou à l'autre d'ailleurs)
..
mais si je l'enlève, ca ne marche pas, ''erreur 1004, impossible de définir la propriété PivotItems de la classe PivotField"
(à la ligne : CHAMP.PivotItems("""").Visible = False, ou à l'autre d'ailleurs)
..
Zoul67
Messages postés
1959
Date d'inscription
lundi 3 mai 2010
Statut
Membre
Dernière intervention
30 janvier 2023
149
Modifié par Zoul67 le 29/08/2013 à 11:35
Modifié par Zoul67 le 29/08/2013 à 11:35
En fait la macro ne bug pas si on laisse On Error Resume Next, mais elle ne fait rien de ce qui est demandé, elle ne décoche pas les vides si il y en a.
Je n'aurais pas dû me fier à ta syntaxe pour les vides ; en mettant "" (au lieu de """"), chez moi ça retire les vides.
Pour les blank, j'ai dû utiliser un autre fichier que celui de cjoint, et ça marche aussi.
mais si je l'enlève, ca ne marche pas, ''erreur 1004, impossible de définir la propriété PivotItems de la classe PivotField"
(à la ligne : CHAMP.PivotItems("""").Visible = False, ou à l'autre d'ailleurs)
Je n'ai pas mis le On Error par hasard (il est d'ailleurs généralement à éviter). Si la macro tente de décocher une case qui n'existe pas, il y aura une erreur : l'erreur 1004 que tu mentionnes.
Je n'aurais pas dû me fier à ta syntaxe pour les vides ; en mettant "" (au lieu de """"), chez moi ça retire les vides.
Pour les blank, j'ai dû utiliser un autre fichier que celui de cjoint, et ça marche aussi.
mais si je l'enlève, ca ne marche pas, ''erreur 1004, impossible de définir la propriété PivotItems de la classe PivotField"
(à la ligne : CHAMP.PivotItems("""").Visible = False, ou à l'autre d'ailleurs)
Je n'ai pas mis le On Error par hasard (il est d'ailleurs généralement à éviter). Si la macro tente de décocher une case qui n'existe pas, il y aura une erreur : l'erreur 1004 que tu mentionnes.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ap49
Messages postés
8
Date d'inscription
jeudi 29 août 2013
Statut
Membre
Dernière intervention
2 octobre 2013
29 août 2013 à 15:13
29 août 2013 à 15:13
effectivement ca fonctionne pour les "" avec ta correction, pour les blank je cherche encore mais je pense que ca vient d'une erreur précédente de codage :
J'ai à un moment donné, malheureusement écrit PivotItems("(blank)").Value = False au lieu de PivotItems("(blank)").Visible = False
Alors du coup ca avait changé tous les (vide) par Faux, logique .... !
J'ai alors rajouté dans le code
PivotItems("Faux").Value = (vide)
pour me remettre des (vide) au lieu des Faux
puis je suis revenu à un code correctement rédigé (que j'ai collé plus haut donc)
Et je pense que c'est depuis ce moment qu'il ne veut pas fonctionner sur les (vide) (et qu'il fonctionne bien sur "")...
le problème c'est surement qu'il ne reconnait plus (blank) ou quelque chose du genre...
En tout cas ma macro progresse déja bien, c'est ma chef qui est ravie ^^ merci !
J'ai à un moment donné, malheureusement écrit PivotItems("(blank)").Value = False au lieu de PivotItems("(blank)").Visible = False
Alors du coup ca avait changé tous les (vide) par Faux, logique .... !
J'ai alors rajouté dans le code
PivotItems("Faux").Value = (vide)
pour me remettre des (vide) au lieu des Faux
puis je suis revenu à un code correctement rédigé (que j'ai collé plus haut donc)
Et je pense que c'est depuis ce moment qu'il ne veut pas fonctionner sur les (vide) (et qu'il fonctionne bien sur "")...
le problème c'est surement qu'il ne reconnait plus (blank) ou quelque chose du genre...
En tout cas ma macro progresse déja bien, c'est ma chef qui est ravie ^^ merci !
Zoul67
Messages postés
1959
Date d'inscription
lundi 3 mai 2010
Statut
Membre
Dernière intervention
30 janvier 2023
149
29 août 2013 à 15:59
29 août 2013 à 15:59
Ah ben j'étais presque agacé par le fait que tu veuilles décocher les "(vide)" alors qu'il n'y en avait pas... Je m'étonnais en revanche de la présence de "Faux".
En actualisant les données, je pensais que tout se remettrait en ordre, mais ça ne marche pas sur mon fichier. Et sur le tien.
Sinon, j'espère que tu peux repartir d'un ancien fichier (avant de baptiser les Faux)...
En actualisant les données, je pensais que tout se remettrait en ordre, mais ça ne marche pas sur mon fichier. Et sur le tien.
Sinon, j'espère que tu peux repartir d'un ancien fichier (avant de baptiser les Faux)...
ap49
Messages postés
8
Date d'inscription
jeudi 29 août 2013
Statut
Membre
Dernière intervention
2 octobre 2013
29 août 2013 à 18:54
29 août 2013 à 18:54
Et bien merci beaucoup pour ton aide, maintenant tout fonctionne.
La macro pourrait surement être plus simplement codée, mais bon, j'ai mis les vérif sur (blank) & (vide); et comme ça ils se décochent bien tous.
Je mets le code qui fonctionne, à adapter.
La macro pourrait surement être plus simplement codée, mais bon, j'ai mis les vérif sur (blank) & (vide); et comme ça ils se décochent bien tous.
Je mets le code qui fonctionne, à adapter.
Sub Mise_a_jour_des_TCD() '_______définition des variables_______________________________________________________________________ Dim ws As Worksheet Dim wb As Workbook Dim TCD As PivotTable Dim CHAMP As PivotField Dim p As PivotItem Set wb = ThisWorkbook '_______Conditions d'application de la macro : si il y a des données dans saisie________________________ If Cells(110, 7) <> "" Then '_______Freeze de l'écran, pour ne pas trop ralentir le système_______________________________________________________________________________ Application.ScreenUpdating = False '_______MAJ des TCD_____________________________________________________________________________________ For Each ws In wb.Worksheets For Each TCD In ws.PivotTables On Error Resume Next For Each CHAMP In TCD.PivotFields CHAMP.PivotItems("(blank)").Visible = False CHAMP.PivotItems("(vide)").Visible = False CHAMP.PivotItems((blank)).Visible = False CHAMP.PivotItems((vide)).Visible = False CHAMP.PivotItems("").Visible = False Next CHAMP On Error GoTo 0 Next TCD Next ws '_______défreeze de l'écran____________________________________________________________________________ Application.ScreenUpdating = True '_______Message de réussite____________________________________________________________________________ MsgBox ("Les TCD ont été mis à jour, reste à définir la précocité & vérifier les récap") '_______Fin des conditions_____________________________________________________________________________ End If '___________Actualisation 3 fois de suite, pour les tcd dépendant d'autres tcd, sinon tout n'est pas à jour ... ActiveWorkbook.RefreshAll ActiveWorkbook.RefreshAll ActiveWorkbook.RefreshAll '_______Fin de la macro_____________________________________________________________________________ End Sub