Ericbzc
Messages postés17Date d'inscriptionlundi 24 novembre 2008StatutMembreDernière intervention13 décembre 2010
-
17 juin 2010 à 16:38
Ericbzc
Messages postés17Date d'inscriptionlundi 24 novembre 2008StatutMembreDernière intervention13 décembre 2010
-
17 juin 2010 à 23:58
Bonjour,
N'ayant pas de formation vba, mais bidouillant pas mal, il y a un phénomène que je ne comprends pas avec la fonction cells(i,j).
Si qq1 pouvait m'expliquer, ca serait super sympa.
Dans "module 1" le code tout bête suivant (appelé à partir d'un bouton de commande - formulaire) fonctionne parfaitement :
- sub toto()
- sheets("feuil1").select
- cells(5,4).select
- do actions...
-end sub
En revanche, si je souhaite utiliser un bouton de commande ActiveX, le même code (qui se trouve du coup directement dans la feuille et non plus dans module), plante sur l'instruction cells
- Private sub toto()
- sheets("feuil1").select
- cells(5,4).select
- end sub
Si je tape application.cells ca marche.
ou encore si je définis ws = sheets("feuil1") et qu'ensuite j'utilise ws.cells() ca marche aussi.
Ma question est donc simple : pourquoi une instruction aussi bête que cells(i,j) ne fonctionne plus dans le cadre d'un controle activeX ??? pourquoi faut-il lui ajouter des paramètres ??
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 17 juin 2010 à 19:03
Salut
En effet, je n'avais jamais remarqué cette différence.
Je pense que cela peut s'expliquer par le fait que, le bouton appartenant à la feuille, tous les objets comme Cells pour lesquels on ne précise pas d'appartenance, se référent à la feuille courante.
Ainsi, Cells(1,1).Value va aller lire la cellule de la feuille courante, bien qu'on ait fait le Sheets.Select d'une autre feuille juste avant.
Pour accéder à la donnée, il faut en effet mettre la syntaxe complète
Worksheets("Feuil2").Cells(1, 1).Value
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)