Variable de type Range - Comportement... variable

Bonjour à tous.

J’ai un problème de définition de Variable.

Supposons la routine :

Sub ChangerPourLaMêmeChose()

For Each Cellule In Selection

Cellule.Value = Cellule.Value

Next Cellule

End Sub

Il faut bien sûr définir la Variable Cellule !

Si, en tête de routine, je définis Cellule comme Variable Locale par « Dim Cellule As Range », la routine s’exécute.

Si, en tête du module, je définis Cellule comme Variable Publique par « Public Cellule As Range », la routine s’exécute.

Mais par principe et depuis longtemps... et sans souci particulier,

je définis toutes mes variables en tant que Variables Publiques

dans un module spécifique appelé finement « a_ConstantesEtVariables ».

Donc Cellule est définie dans ce module par « Public Cellule As Range ».

Mais alors l’exécution de la routine est sanctionnée d’une erreur de compilation :

« La variable de contrôle For Each doit être de type Variant ou Object ».

Pas contrarié par une définition de Variable un peu large, dans le module « a_ConstantesEtVariables »

j’ai redéfini Cellule comme Variable Publique du type Variant.

Mais la routine est toujours refusée avec la même erreur de compilation.

Une âme charitable pourra-t-elle me dire quelle ânerie évidente j’ai bien pu commettre pour en arriver là ?

Cordialement

André Blanquer

Bonjour

Il n'y a pas de raison que cela ne fonctionne pas

Merci de m'avoir lu... et aussi vite

Mais pourtant j'ai bien cet effet !

Bien sûr je pallie la chose en redéfinissant Cellule dans la routine

mais ce n'est pas satisfaisant pour l'esprit !

Ah ! J'avais oublié quelque chose :

préférant mes menus personnels qui me mettent à ma disposition

directement et dans une forme concentrée

les commandes et routines qui me conviennent,

je n'ai pas adopté Excel 2007 et plus avec ses [censuré] de rubans encombrants et malpratiques...

Bref : j'utilise Excel 2002.

Probablement pas de lien, mais sait-on jamais ?

En tout cas, merci de ta réponse.

Cordialement

André Blanquer

Bonjour le fil

Comme Banzai64 que je salue , il n'y a pas de raisons

j'ai testé et cela fonctionne parfaitement sur 2003 et 2010

En revanche tu es sur 2002, donc sur Mac, là est peut-être le souci

Effectue quand même une recherche dans ton VBA project du terme "Cellule" voir si tu ne l'as pas définit autrement ailleurs

A+

Bonjour Bruno

Merci pour ton intervention.

Version Excel :

Pas de Mac !

Excel 2002 est une honnête version pour PC installée sur un PC avec le CD prévu pour.

Variable « Cellule » :

J’ai vérifié

- tous les « Dim Cellule As » correctifs sont écrits dans le corps des routines utilisatrices de la variable.

(accessoirement cela me rappelle que ce souci est assez ancien) ;

- le seul « Public Cellule As Variant » est écrit dans le module « a_ConstantesEtVariables »

Son existence ne gêne pas les « Dim » correcteurs dont la présence palliatrice permet le fonctionnement des routines.

Comportement toujours mystérieux

Cordialement

André Blanquer

Bonjour André

AndréBlanquer a écrit :

Version Excel :

Pas de Mac !

Excel 2002 est une honnête version pour PC installée sur un PC avec le CD prévu pour.

Désolé, je ne mettait aucunement ton intégrité en doute

Effectivement 2002 c'est la version qu'on appelait "XP" à mon taf, on l'a vite abandonné tellement on avait des soucis avec

AndréBlanquer a écrit :

Variable « Cellule » :

J’ai vérifié

- tous les « Dim Cellule As » correctifs sont écrits dans le corps des routines utilisatrices de la variable.

(accessoirement cela me rappelle que ce souci est assez ancien) ;

- le seul « Public Cellule As Variant » est écrit dans le module « a_ConstantesEtVariables »

Son existence ne gêne pas les « Dim » correcteurs dont la présence palliatrice permet le fonctionnement des routines.

Perso,

Je supprimerais tous les "Dim Cellule As"

Si tu veux initialiser ta variable objet, tu peux utiliser

Set Cellule = Nothing

Je n'utiliserais pas non plus "Variant" pour définir ta variable publique, appelons un chat un chat, surtout en VBA

Public Cellule As Range

Voilà tout ce que je peux dire

A+

Bonsoir

Bonsoir BrunoM45

Je rajouterai une chose à ce que dit BrunoM45, vérifies si tu n'as pas une macro, le nom d'un module, un userform qui s'appelle Cellule

Mais ton fichier avec ce problème nous aiderait (ou pas) à comprendre le problème

Bonjour à tous.

Je reviens vers le forum et mon problème après quelques jours d’absence.

Merci BrunoM et Banzai64 pour vos commentaires.

BrunoM, avec votre réflexion

« Effectue quand même une recherche dans ton VBA project du terme "Cellule" voir si tu ne l'as pas défini autrement ailleurs » vous aviez identifié le problème, mais je n’ai pas été assez fûté pour le comprendre immédiatement.

Bref, si j’avais vérifié que le module où je regroupe mes variables ne contenait pas un Cellule perturbateur, je n’ai pas examiné les noms des modules, en particulier celui du module rassemblant les routines intervenant sur les cellules, module logiquement nommé "Cellule".

Je vais donc faire ce que je fais dans mes routines plus lourdes où j’utilise plusieurs modules que je souhaite classer dans une ordre logique : les nommer avec en tête une lettre de l’alphabet et un underscore !

Heureusement que Banzai64 s’est chargé de me mettre les points sur les i ! Ce n’était pas un UserForm appelé Cellule, mais là, si je n’avais pas regardé les noms de modules, j’aurais été indigne de poser une question sur ce Forum !

Merci à tous deux.

BrunoM, je vais regarder ce que cache « Set Cellule = Nothing », syntaxe que je n’utilise pas (pas encore !).

Et excuse-moi, je n’avais pas cru que tu « mettais en doute mon intégrité » : en fonction du contexte, "honnête" prend souvent chez-moi le sens de "banal", "quelconque" ou tout autre "synoyme approché".

Excel 2002 serait un Excel à problèmes ? Ma foi jusqu’à présent, je n’ai eu de souci avec lui que depuis qu’il tourne sur Windows 8, avec quelques plantages intempestifs (par exemple en ouvrant un fichier.xls chargé sur un forum, ce qui vient de m’arriver) ou parce que la défintion de l’écran rend les icônes un peu petits pour ma vue, mais là ce n’est pas de sa faute.

J’ai jeté un oeil sur la version 2016 d’Excel. Toujours pas d’option « menus à l’ancienne », donc je reste en 2002... à moins que je ne trouve un CD Excel 2003 qui traînerait dans la rue.

Bon, félicitations et merci encore à tous deux.

André Blanquer

Bonjour à tous.

Je reviens vers le forum et mon problème après quelques jours d’absence.

Merci BrunoM et Banzai64 pour vos commentaires.

BrunoM, avec votre réflexion

« Effectue quand même une recherche dans ton VBA project du terme "Cellule" voir si tu ne l'as pas défini autrement ailleurs » vous aviez identifié le problème, mais je n’ai pas été assez fûté pour le comprendre immédiatement.

Bref, si j’avais vérifié que le module où je regroupe mes variables ne contenait pas un Cellule perturbateur, je n’ai pas examiné les noms des modules, en particulier celui du module rassemblant les routines intervenant sur les cellules, module logiquement nommé "Cellule".

Je vais donc faire ce que je fais dans mes routines plus lourdes où j’utilise plusieurs modules que je souhaite classer dans une ordre logique : les nommer avec en tête une lettre de l’alphabet et un underscore !

Heureusement que Banzai64 s’est chargé de me mettre les points sur les i ! Ce n’était pas un UserForm appelé Cellule, mais là, si je n’avais pas regardé les noms de modules, j’aurais été indigne de poser une question sur ce Forum !

Merci à tous deux.

BrunoM, je vais regarder ce que cache « Set Cellule = Nothing », syntaxe que je n’utilise pas (pas encore !).

Et excuse-moi, je n’avais pas cru que tu « mettais en doute mon intégrité » : en fonction du contexte, "honnête" prend souvent chez-moi le sens de "banal", "quelconque" ou tout autre "synoyme approché".

Excel 2002 serait un Excel à problèmes ? Ma foi jusqu’à présent, je n’ai eu de souci avec lui que depuis qu’il tourne sur Windows 8, avec quelques plantages intempestifs (par exemple en ouvrant un fichier.xls chargé sur un forum, ce qui vient de m’arriver) ou parce que la défintion de l’écran rend les icônes un peu petits pour ma vue, mais là ce n’est pas de sa faute.

J’ai jeté un oeil sur la version 2016 d’Excel. Toujours pas d’option « menus à l’ancienne », donc je reste en 2002... à moins que je ne trouve un CD Excel 2003 qui traînerait dans la rue.

Bon, félicitations et merci encore à tous deux.

André Blanquer

Rechercher des sujets similaires à "variable type range comportement"