Selection de valeurs d'un champ TCD fonctionne sur 2007 mais pas 2010 - VB/VBA/VBS - Programmation
Marsh Posté le 26-12-2014 à 12:50:22
Bonjour, bonjour !
Il n'y a rien dans les lignes indiquées provoquant une telle erreur …
Tu t'es certainement trompé dans les numéros de lignes car déjà l'une d'entre-elles est vide !
Contrôle dans le code affiché le n° de la ligne déclenchant l'erreur par rapport à la ligne surlignée dans le VBE …
Les TCD ont effectivement évolués dans la version 2010 tout comme dans la version 2013.
Voir donc chez Microsoft la documentation relative aux nouveautés de la version …
Marsh Posté le 26-12-2014 à 20:55:51
Salut, même avant ça : par exemple sous 2003 PivotItems(i).Value = (vide) est devenu sous 2007 (blank)
Marsh Posté le 27-12-2014 à 10:27:07
Bonjour,
Je vous remercie de m'avoir répondu.
Et effectivement, les lignes qui resortent en erreur sont les 137 et 138. Sinon, dans mon post original j'ai oublié de dire que j'avais testé le code avec "Blank" au lieu de "vide" sans que cela résolve le problème.
Aussi, ce code fonctionne tres bien sur VAB 2007 et VBA 2003, c'est seulement sur VBA 2010 qu'il y a probleme.
Marc L, j'ai essayé de cherché, les différences sur la codification des TCD entre VBA 2007 et 2010 mais je n'ai rien trouvé concernant les filtres sur les valeurs de champs d'un TCD. Et je pense que c'est la que ca pose probleme. Mais merci pour la piste au sujet de la doc Microsoft, il ne me reste qu'à trouver ça.
Cordialement.
Yannick
Marsh Posté le 27-12-2014 à 12:15:25
Vu la ligne n°135 For Each AB in Activesheet.PivotTables … .PivotItems, pourquoi en lignes 137-139
répéter tout le chemin alors que la variable objet AB pointe déjà sur un élément de la collection PivotItems ?!
Du genre AB.Visible = True … Sinon à quoi bon utiliser For Each !
Tout le bloc des lignes n°136 à 145 peut se réduire en une seule ligne : AB.Visible = AB.Name <> "(vide)" ‼
Sinon insérer juste entre les lignes 135 & 136 une ligne Debug.Print AB.Name permettant de visualiser dans la fenêtre VBE
Exécution (Ctrl + G) le nom de chacun des éléments et lors d'une erreur, vérifier le dernier de la liste, le B-A-BA du débogage …
Marsh Posté le 27-12-2014 à 12:36:30
Je vous remercie pour la réponse.
En simplifiant peut être que VBA 2010 fera fonctionner le code. Les versions précédentes étaient plus indulgentes. Des que je retourne au boulot et retrouve mon va 2010, je testerai la solution. A la base je recrivais la ligne de code pour lui dire où aller chercher la valeur "vide". Je veux dire dans quel champ aller filtrer la valeur vide.
Cordialement.
Marsh Posté le 27-12-2014 à 12:55:32
Vu que ton problème est au cours sur un autre forum, cas évident de cross-posting sauvage peu apprécié sur les forums,
je te laisse continuer sur l'autre forum …
Marsh Posté le 27-12-2014 à 15:45:17
Une solution sur ce forum pourrait être mieux comprise. Je comprends ta remarque. Mais je te promets qu'il arrive souvent.que pour un même problème, une réponse soit mieux comprise qu'une autre par les débutants. Parfois en cherchant sur un forum on ne parviens pas à adapter la réponse à notre cas alors qu'une autre réponse sera plus adaptable.
Je te remercie pour tes réponses en tout cas.
Cordialement
Marsh Posté le 27-12-2014 à 19:13:48
Même si les lignes n°137 à 139 ne sont pas propres - à comparer avec les lignes n°141 à 144 - il semblerait qu'il s'agisse d'un bug,
voie vers laquelle se tourne l'autre forum. Donc aucun intérêt de continuer en double ici …
Marsh Posté le 19-12-2014 à 19:11:06
Bonjour,
J'ai créé un TCD sur VBA 2003 (qui fonctionne egalement sur VBA 2007). Mais lors du code de la condition (sélection) de valeurs sur un champ de tableau croisé dynamique, il y a une erreur "incompatibilité de type" lors de l'execution de la macro sur VBA 2010 [b](ligne code 131 et 132)
Cordialement.
Yannick
Message édité par yanounou91 le 19-12-2014 à 19:11:47