Limite d'un Range/TCD
Résolu/Fermé
A voir également:
- Limite d'un Range/TCD
- Tcd excel - Guide
- Vba range avec variable ✓ - Forum VB / VBA
- Out of range ✓ - Forum Matériel & Système
- D'sub out of range - Forum Ecran
- Input signal out of range change settings to 1600x900-60hz - Forum Windows
6 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
2 juin 2016 à 15:08
2 juin 2016 à 15:08
Bonjour,
Oulala...
Beaucoup d'erreurs...
La première est dans ta déclaration des variables.
Ecrire :
est équivalant à :
En VBA il faut typer chacune des variables.
De ce fait, ton "range" plagesource n'est pas un Range, mais un Variant.
Ca n'est pas trop grave, mais fait déjà cette modification.
Ensuite, nommer une feuille avec des guillemets n'est franchement pas une réussite.
Personnellement, je renommerai GD "S" en GD S.
Dans un TCD, le paramètre SourceData est de type Variant car il peut prendre plusieurs types de données selon ce que tu veux faire. Ici, en l'occurence, ta liste de données est une Liste ou base de données Microsoft Excel. Par conséquent, tu ne dois pas passer le Range comme paramètre, mais son adresse.
Remplace donc :
Par :
Avec ces trois points tu devrais avancer un peu dans ton débogage, mais tu risques fort de revenir avec une nouvelle erreur...
Oulala...
Beaucoup d'erreurs...
La première est dans ta déclaration des variables.
Ecrire :
Dim feuilleGCD, feuilleRepartitionMensuelle, mois, anneeActu, moisActu As String
est équivalant à :
Dim feuilleGCD As Variant, feuilleRepartitionMensuelle As Variant, mois As Variant, anneeActu As Variant, moisActu As String
En VBA il faut typer chacune des variables.
De ce fait, ton "range" plagesource n'est pas un Range, mais un Variant.
Ca n'est pas trop grave, mais fait déjà cette modification.
Dim feuilleGCD As String, feuilleRepartitionMensuelle As String Dim mois As String, anneeActu As String, moisActu As String Dim i As Long, iprim As Long, premLig As Long, derLig As Long Dim derCol As Long, cptWP As Long Dim valTampon1 As Variant, valTampon2 As Variant, valTampon3 As Variant Dim plageSource As Range, plageDestination As Range Dim emplacementGraphe As Range Dim monPivotCache As PivotCache Dim monTCD As PivotTable Dim monPVT As PivotItem Dim monChart As Chart Dim tabWP_LT() As String, tabWP() As String
Ensuite, nommer une feuille avec des guillemets n'est franchement pas une réussite.
Personnellement, je renommerai GD "S" en GD S.
Dans un TCD, le paramètre SourceData est de type Variant car il peut prendre plusieurs types de données selon ce que tu veux faire. Ici, en l'occurence, ta liste de données est une Liste ou base de données Microsoft Excel. Par conséquent, tu ne dois pas passer le Range comme paramètre, mais son adresse.
Remplace donc :
Set monPivotCache = ActiveWorkbook.PivotCaches.Create( _ SourceType:=xlDatabase, _ SourceData:=plageSource)
Par :
Set monPivotCache = ActiveWorkbook.PivotCaches.Create( _ SourceType:=xlDatabase, _ SourceData:=plageSource.Address)
Avec ces trois points tu devrais avancer un peu dans ton débogage, mais tu risques fort de revenir avec une nouvelle erreur...
aureliendu31
Messages postés
11
Date d'inscription
mercredi 1 juin 2016
Statut
Membre
Dernière intervention
8 juin 2016
2 juin 2016 à 15:16
2 juin 2016 à 15:16
Bonjour Pikaju,
Et merci de m'aider !
J'ai eu ces quelques remarques depuis que j'ai diffusé le fichier, j'ai eu le temps de le corriger en local pour voir si ça évolue.Pour l'instant je suis toujours bloqué,même si je reconnais que le typage des variables est plus "propre" ainsi.
Si tu as la possibilité de faire tourner le code sur ton PC avec les modifs dont tu me parles, ça bloque ensuite sur le plageDestination.
J'ai essayé d'écrire plageDestination.address pour voir mais ça plante tout de même...
As-tu une idée pour poursuivre la correction ?
Pour info, là où je suis perplexe c'est que ça fonctionne parfaitement sur une BDD de petite dimension, et ça plante lorsque celle-ci fait 102 000 lignes...
A bientôt,
Aurélien
Et merci de m'aider !
J'ai eu ces quelques remarques depuis que j'ai diffusé le fichier, j'ai eu le temps de le corriger en local pour voir si ça évolue.Pour l'instant je suis toujours bloqué,même si je reconnais que le typage des variables est plus "propre" ainsi.
Si tu as la possibilité de faire tourner le code sur ton PC avec les modifs dont tu me parles, ça bloque ensuite sur le plageDestination.
J'ai essayé d'écrire plageDestination.address pour voir mais ça plante tout de même...
As-tu une idée pour poursuivre la correction ?
Pour info, là où je suis perplexe c'est que ça fonctionne parfaitement sur une BDD de petite dimension, et ça plante lorsque celle-ci fait 102 000 lignes...
A bientôt,
Aurélien
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
2 juin 2016 à 15:19
2 juin 2016 à 15:19
Ce que je vois c'est que je viens de passer du temps pour t'apporter des corrections que quelqu'un d'autre t'avais déjà donné (ThauTheme en l'occurence).
Si tu veux que l'on t'aide, il faudrait déjà intégrer les modifs dans ton fichier et poser les bonnes questions!
Si tu veux que l'on t'aide, il faudrait déjà intégrer les modifs dans ton fichier et poser les bonnes questions!
aureliendu31
Messages postés
11
Date d'inscription
mercredi 1 juin 2016
Statut
Membre
Dernière intervention
8 juin 2016
2 juin 2016 à 15:51
2 juin 2016 à 15:51
Re,
Je suis désolé que tu sois contrarié.
Il est vrai que TauTheme m'a apporté sa contribution, mais comme les modifications apportées n'ont pas eu d'impact sur la ligne qui bloque toujours, je n'ai pas pensé utile de remettre un nouveau fichier...
Je suis désolé que ça t'ait fait perdre du temps, je ne m'en suis pas rendu compte : à l'avenir je prendrai toujours garde à proposer le fichier le plus actualisé possible.
Peux-tu m'aider tout de même pour la suite ?
Voici le nouveau fichier en question : https://www.cjoint.com/c/FFcnYfBE5Fp
Ma question est toujours la même, je pense (j'espère !) que c'est la bonne : comment se fait-il que la macro fonctionne correctement pour une petite base de données mais pas pour une grande ?
A bientôt,
Aurélien
Je suis désolé que tu sois contrarié.
Il est vrai que TauTheme m'a apporté sa contribution, mais comme les modifications apportées n'ont pas eu d'impact sur la ligne qui bloque toujours, je n'ai pas pensé utile de remettre un nouveau fichier...
Je suis désolé que ça t'ait fait perdre du temps, je ne m'en suis pas rendu compte : à l'avenir je prendrai toujours garde à proposer le fichier le plus actualisé possible.
Peux-tu m'aider tout de même pour la suite ?
Voici le nouveau fichier en question : https://www.cjoint.com/c/FFcnYfBE5Fp
Ma question est toujours la même, je pense (j'espère !) que c'est la bonne : comment se fait-il que la macro fonctionne correctement pour une petite base de données mais pas pour une grande ?
A bientôt,
Aurélien
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
2 juin 2016 à 16:22
2 juin 2016 à 16:22
Bon.
Il n'y a pas vraiment de limite, donc pas de réponse à ta question.
Si tu veux passer une ligne de code supplémentaire, remplace :
par
Mais bon à cette allure là, on n'est pas sorti du sable.
Donc...
Enregistre grâce à l'enregistreur de macro, la procédure de création de ton TCD. Seul toi peux le faire car seul toi connais les champs à utiliser.
Avec le code de l'enregistreur, essaie de corriger ton code. Si tu n'y parviens pas reviens nous voir avec les deux codes (enregistreur et le tien).
Il n'y a pas vraiment de limite, donc pas de réponse à ta question.
Si tu veux passer une ligne de code supplémentaire, remplace :
'Creation TCD depuis PivotCache Set monTCD = monPivotCache.CreatePivotTable(TableDestination:=plageDestination.Cells(1, 1))
par
'Creation TCD depuis PivotCache Set monTCD = monPivotCache.CreatePivotTable(TableDestination:=plageDestination.Cells(1, 1), TableName:="monnom")
Mais bon à cette allure là, on n'est pas sorti du sable.
Donc...
Enregistre grâce à l'enregistreur de macro, la procédure de création de ton TCD. Seul toi peux le faire car seul toi connais les champs à utiliser.
Avec le code de l'enregistreur, essaie de corriger ton code. Si tu n'y parviens pas reviens nous voir avec les deux codes (enregistreur et le tien).
aureliendu31
Messages postés
11
Date d'inscription
mercredi 1 juin 2016
Statut
Membre
Dernière intervention
8 juin 2016
Modifié par aureliendu31 le 2/06/2016 à 17:46
Modifié par aureliendu31 le 2/06/2016 à 17:46
Re,
j'ai tenté de faire comme tu me l'as proposé. J'ai toujours ce message "erreur 13 - incompatibilité de type" qui ressort.
(la modif proposée avec le tableName bloque toujours par contre)
Je te mets en lien le nouveau fichier, avec en évidence dans le code l'enregistrement de macro.
https://www.cjoint.com/c/FFcpRkA2Dtp
A bientôt et encore merci pour le temps que tu passes à m'aider ! Je garde la foi ☺
j'ai tenté de faire comme tu me l'as proposé. J'ai toujours ce message "erreur 13 - incompatibilité de type" qui ressort.
(la modif proposée avec le tableName bloque toujours par contre)
Je te mets en lien le nouveau fichier, avec en évidence dans le code l'enregistrement de macro.
https://www.cjoint.com/c/FFcpRkA2Dtp
A bientôt et encore merci pour le temps que tu passes à m'aider ! Je garde la foi ☺
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
2 juin 2016 à 18:14
2 juin 2016 à 18:14
Pas besoin de foi.
Je n'ai pas accès à ton fichier ce soir, je regarde demain
--
Je n'ai pas accès à ton fichier ce soir, je regarde demain
--
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Hello !
Je n'ai toujours pas réussi à débloquer le code, as-tu eu le temps de regarder ce qui peut poser problème ?
A bientôt,
Je n'ai toujours pas réussi à débloquer le code, as-tu eu le temps de regarder ce qui peut poser problème ?
A bientôt,
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
6 juin 2016 à 10:54
6 juin 2016 à 10:54
Salut,
Je n'y parviens pas non plus...
Désolé
Je n'y parviens pas non plus...
Désolé