Erreur de sélection de Range
Fermé
aureliendu31
Messages postés
11
Date d'inscription
mercredi 1 juin 2016
Statut
Membre
Dernière intervention
8 juin 2016
-
1 juin 2016 à 12:18
aureliendu31 Messages postés 11 Date d'inscription mercredi 1 juin 2016 Statut Membre Dernière intervention 8 juin 2016 - 8 juin 2016 à 12:05
aureliendu31 Messages postés 11 Date d'inscription mercredi 1 juin 2016 Statut Membre Dernière intervention 8 juin 2016 - 8 juin 2016 à 12:05
A voir également:
- Erreur de sélection de Range
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur 3000 france tv - Forum Lecteurs et supports vidéo
- Erreur 1001 outlook - Accueil - Bureautique
- D'sub out of range - Forum Ecran
14 réponses
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
1 juin 2016 à 13:53
1 juin 2016 à 13:53
Bonjour Aurélien, bonjour le forum,
Peut être un problème de portabilité de la variable plageSource ?... Sans le code difficile de t'aider !
Peut être un problème de portabilité de la variable plageSource ?... Sans le code difficile de t'aider !
aureliendu31
Messages postés
11
Date d'inscription
mercredi 1 juin 2016
Statut
Membre
Dernière intervention
8 juin 2016
Modifié par aureliendu31 le 1/06/2016 à 15:15
Modifié par aureliendu31 le 1/06/2016 à 15:15
Bonjour Thautheme,
c'est juste !
Voici le code en question :
Dans l'en-tête du module :
Dim premLig, derLig, derCol As Integer
Dim plageSource, plageDestination, emplacementGraphe As Range
Et dans le sub qui pose problème :
Sheets("DATA").Visible = True
Sheets("DATA").Activate
derLig = Cells(Rows.Count, 1).End(xlUp).Row
derCol = Cells(1, Columns.Count).End(xlToLeft).Column
Set plageSource = Range(Cells(1, 1), Cells(derLig, derCol))
plageSource.Select
il n'est pas bien folichon...
J'ai oublié de préciser : ceci fonctionne parfaitement lorsque la plage est faible (typiquement quelques milliers de ligne), mais dans mon cas précis il y a 102 000 lignes.
J'ai pensé que l'erreur venait de là au départ, mais je n'ai pas trouvé dans la documentation de MS Excel d'indication dans ce sens : un range peut prendre a priori la taille d'une feuille entière.
complément d'info : type erreur 13 - incompatibilité de type
et j'ai vérifié, la feuille de données est entièrement au format de cellule standard...
Voilà, je reste à l'affût s'il y a d'autres questions !
c'est juste !
Voici le code en question :
Dans l'en-tête du module :
Dim premLig, derLig, derCol As Integer
Dim plageSource, plageDestination, emplacementGraphe As Range
Et dans le sub qui pose problème :
Sheets("DATA").Visible = True
Sheets("DATA").Activate
derLig = Cells(Rows.Count, 1).End(xlUp).Row
derCol = Cells(1, Columns.Count).End(xlToLeft).Column
Set plageSource = Range(Cells(1, 1), Cells(derLig, derCol))
plageSource.Select
il n'est pas bien folichon...
J'ai oublié de préciser : ceci fonctionne parfaitement lorsque la plage est faible (typiquement quelques milliers de ligne), mais dans mon cas précis il y a 102 000 lignes.
J'ai pensé que l'erreur venait de là au départ, mais je n'ai pas trouvé dans la documentation de MS Excel d'indication dans ce sens : un range peut prendre a priori la taille d'une feuille entière.
complément d'info : type erreur 13 - incompatibilité de type
et j'ai vérifié, la feuille de données est entièrement au format de cellule standard...
Voilà, je reste à l'affût s'il y a d'autres questions !
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
1 juin 2016 à 15:33
1 juin 2016 à 15:33
Re,
C'est à cause de la variable derCOL que tu as déclarée de type Integer (limité à 32 767). Il te faut la déclarer de type Long limité à 2 147 483 647...
C'est à cause de la variable derCOL que tu as déclarée de type Integer (limité à 32 767). Il te faut la déclarer de type Long limité à 2 147 483 647...
aureliendu31
Messages postés
11
Date d'inscription
mercredi 1 juin 2016
Statut
Membre
Dernière intervention
8 juin 2016
Modifié par aureliendu31 le 1/06/2016 à 15:46
Modifié par aureliendu31 le 1/06/2016 à 15:46
Rebonjour ThauTheme,
Merci pour l'indication ! j'ai foncé dessus mais au final ça n'a pas changé le résultat...même si je pense que ça contribuait.(j'ai même refermé et rouvert le fichier au cas où)
Sur la fenêtre "variables locales", j'ai le type qui s'affiche : Variant/Long alors que je l'ai déclaré Long et avec l'option Explicit.
De même, plageSource affiche comme type : Variant/Object/Range.
Je suis un peu perplexe...
Tu aurais une autre idée ?
à bientôt
Merci pour l'indication ! j'ai foncé dessus mais au final ça n'a pas changé le résultat...même si je pense que ça contribuait.(j'ai même refermé et rouvert le fichier au cas où)
Sur la fenêtre "variables locales", j'ai le type qui s'affiche : Variant/Long alors que je l'ai déclaré Long et avec l'option Explicit.
De même, plageSource affiche comme type : Variant/Object/Range.
Je suis un peu perplexe...
Tu aurais une autre idée ?
à bientôt
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
aureliendu31
Messages postés
11
Date d'inscription
mercredi 1 juin 2016
Statut
Membre
Dernière intervention
8 juin 2016
Modifié par aureliendu31 le 1/06/2016 à 15:57
Modifié par aureliendu31 le 1/06/2016 à 15:57
complément d'info : l'erreur intervient lorsque dans la suite du code j'écris :
Dim monPivotCache As PivotCache
'Creation PivotCache depuis plageSource
Set monPivotCache = ActiveWorkbook.PivotCaches.Create( _
SourceType:=xlDatabase, _
SourceData:=plageSource)
c'est en remontant le fil de mes investigations que j'ai constaté que plageSource ne réagissait pas normalement, j'aurais du en parler plus tôt...
Dim monPivotCache As PivotCache
'Creation PivotCache depuis plageSource
Set monPivotCache = ActiveWorkbook.PivotCaches.Create( _
SourceType:=xlDatabase, _
SourceData:=plageSource)
c'est en remontant le fil de mes investigations que j'ai constaté que plageSource ne réagissait pas normalement, j'aurais du en parler plus tôt...
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
1 juin 2016 à 15:59
1 juin 2016 à 15:59
Re,
Oui, j'ai une super idée. Envoie ton fichier (voir www.cjoint.com) pour éviter de perdre un temps fou...
Sinon, si ta plage ne contient pas de ligne ou de colonne vide, le code peut être simplifié avec :
Pas nécessairement besoin de de rendre l'onglet visible ni de le sélectionner pour définir la plage...
Oui, j'ai une super idée. Envoie ton fichier (voir www.cjoint.com) pour éviter de perdre un temps fou...
Sinon, si ta plage ne contient pas de ligne ou de colonne vide, le code peut être simplifié avec :
Dim plageSource As Range With Sheets("DATA") '.Visible = True '.Activate Set plageSource = .Range("A1").CurrentRegion End With
Pas nécessairement besoin de de rendre l'onglet visible ni de le sélectionner pour définir la plage...
aureliendu31
Messages postés
11
Date d'inscription
mercredi 1 juin 2016
Statut
Membre
Dernière intervention
8 juin 2016
1 juin 2016 à 16:19
1 juin 2016 à 16:19
re,
j'ai simplifié au maximum mon fichier.
Il reste à cliquer sur le bouton "créer courbe S"
https://www.cjoint.com/c/FFborwRyltp
Je te remercie par avance pour ton aide !
Je note pour le tuyau de la feuille visible/invisible, au départ je ne l'avais pas activée mais dans le doute...ça me rassure ☺
j'ai simplifié au maximum mon fichier.
Il reste à cliquer sur le bouton "créer courbe S"
https://www.cjoint.com/c/FFborwRyltp
Je te remercie par avance pour ton aide !
Je note pour le tuyau de la feuille visible/invisible, au départ je ne l'avais pas activée mais dans le doute...ça me rassure ☺
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
1 juin 2016 à 16:32
1 juin 2016 à 16:32
Re,
Bon je galère car sur ma bécane 64 bits ton code ne fonctionne pas car demande des modifications...
Mais je pense savoir où se situe l'erreur.
Tu as le droit de déclarer plusieurs variable dans une seule ligne mais il te faut les typer individuellement sinon elles prennent le type Variant par défaut.
Tu ne peux pas écrire :
pensant que toutes ces variable seront de type Long !... Seule cptWP l'est.
Il te faut écrire :
Bon je galère car sur ma bécane 64 bits ton code ne fonctionne pas car demande des modifications...
Mais je pense savoir où se situe l'erreur.
Tu as le droit de déclarer plusieurs variable dans une seule ligne mais il te faut les typer individuellement sinon elles prennent le type Variant par défaut.
Tu ne peux pas écrire :
Dim i, iprim, premLig, derLig, derCol, cptWP As Long
pensant que toutes ces variable seront de type Long !... Seule cptWP l'est.
Il te faut écrire :
Dim i As Long, iprim As Long, premLig As Long, derLig As Long, derCol As Long, cptWP As Long
aureliendu31
Messages postés
11
Date d'inscription
mercredi 1 juin 2016
Statut
Membre
Dernière intervention
8 juin 2016
Modifié par aureliendu31 le 1/06/2016 à 16:43
Modifié par aureliendu31 le 1/06/2016 à 16:43
re,
ça plante toujours, ça devient les aventuriers du code perdu tout ça ^^
ceci dit, les types affichés en variable locale sont cohérents, j'apprécie !
je suis aussi en 64 bits, c'est étonnant que ça ne fonctionne pas chez toi.
une autre idée ?
ça plante toujours, ça devient les aventuriers du code perdu tout ça ^^
ceci dit, les types affichés en variable locale sont cohérents, j'apprécie !
je suis aussi en 64 bits, c'est étonnant que ça ne fonctionne pas chez toi.
une autre idée ?
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
1 juin 2016 à 17:06
1 juin 2016 à 17:06
Re,
je me suis mal exprimé. C'est "Office 10 64 bits" qui pose problème. J'ai essayé de faire tourner le code pas à pas mais il manques des onglets...
je me suis mal exprimé. C'est "Office 10 64 bits" qui pose problème. J'ai essayé de faire tourner le code pas à pas mais il manques des onglets...
aureliendu31
Messages postés
11
Date d'inscription
mercredi 1 juin 2016
Statut
Membre
Dernière intervention
8 juin 2016
1 juin 2016 à 17:14
1 juin 2016 à 17:14
c'est étonnant, j'ai fait la manip pas à pas, et il me semble que rien ne manque...quel est l'onglet manquant ?
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
1 juin 2016 à 18:50
1 juin 2016 à 18:50
Re,
Oui tu as raison. J'ai voulu sauter les premières macros dont une définit la variable feuilleGCD. C'est pour cela que ça plantait.
Écoute, je suis archi nul en TCD mais après lecture de l'aide VBA j'ai réussi à passer deux lignes en les modifiant :
remplacé par :
puis :
remplacer par :
Mais la ligne en dessous plante aussitôt et l'aide VBA s'est subitement transformé en chinois, voire même coréen du centre (pour ne blesser personne)...
J'en déduis que le problème ne vient pas de la variable plageSource. Tu dois revoir le code de création du TCD...
Oui tu as raison. J'ai voulu sauter les premières macros dont une définit la variable feuilleGCD. C'est pour cela que ça plantait.
Écoute, je suis archi nul en TCD mais après lecture de l'aide VBA j'ai réussi à passer deux lignes en les modifiant :
Set monPivotCache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=plageSource)
remplacé par :
Set monPivotCache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=plageSource.Address)
puis :
Set monTCD = monPivotCache.CreatePivotTable(TableDestination:=plageDestination)
remplacer par :
Set monTCD = monPivotCache.CreatePivotTable(TableDestination:=plageDestination.Cells(1, 1))
Mais la ligne en dessous plante aussitôt et l'aide VBA s'est subitement transformé en chinois, voire même coréen du centre (pour ne blesser personne)...
J'en déduis que le problème ne vient pas de la variable plageSource. Tu dois revoir le code de création du TCD...
ok merci bien !
je ne suis plus au bureau là, mais demain matin sans faute j'essaierai : si tu arrives à passer deux lignes c'est déjà un pas de géant pour moi !
Bonne soirée et à très bientôt !
je ne suis plus au bureau là, mais demain matin sans faute j'essaierai : si tu arrives à passer deux lignes c'est déjà un pas de géant pour moi !
Bonne soirée et à très bientôt !
Hello,
ça ne marche pas non plus, je suis bloqué.
Ce que je remarque en revanche, c'est qu'avec une plage de données plus courte (5000 lignes), quand bien même la plageSource présente ce problème dans ses propriétés, rien n'empêche la macro de s'exécuter jusqu'au bout. Du coup a priori la méthode pour la création du TCD devrait fonctionner.
Je me demande si ce n'est pas la taille du range qui est mis en défaut, et si oui comment contourner cet élément...
ça ne marche pas non plus, je suis bloqué.
Ce que je remarque en revanche, c'est qu'avec une plage de données plus courte (5000 lignes), quand bien même la plageSource présente ce problème dans ses propriétés, rien n'empêche la macro de s'exécuter jusqu'au bout. Du coup a priori la méthode pour la création du TCD devrait fonctionner.
Je me demande si ce n'est pas la taille du range qui est mis en défaut, et si oui comment contourner cet élément...
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
2 juin 2016 à 09:56
2 juin 2016 à 09:56
Bonjour,
Désolé mais je ne pourrai pas t'aider davantage car, comme dit plus haut, nul en TCD... Tu devrais peut-être créer un nouveau fil en demandant les limites d'un TCD...
Désolé mais je ne pourrai pas t'aider davantage car, comme dit plus haut, nul en TCD... Tu devrais peut-être créer un nouveau fil en demandant les limites d'un TCD...
aureliendu31
Messages postés
11
Date d'inscription
mercredi 1 juin 2016
Statut
Membre
Dernière intervention
8 juin 2016
8 juin 2016 à 12:05
8 juin 2016 à 12:05
Hello,
pour information j'ai eu la solution sur un autre forum :
https://www.developpez.net/forums/d1588939/logiciels/microsoft-office/excel/macros-vba-excel/limite-d-range-tcd/
ça servira pour un prochain utilisateur en détresse :)
Bonne journée à vous !
pour information j'ai eu la solution sur un autre forum :
https://www.developpez.net/forums/d1588939/logiciels/microsoft-office/excel/macros-vba-excel/limite-d-range-tcd/
ça servira pour un prochain utilisateur en détresse :)
Bonne journée à vous !