[Catégorie modifiée VB6 --> VBA] Explications

Ericbzc Messages postés 17 Date d'inscription lundi 24 novembre 2008 Statut Membre Dernière intervention 13 décembre 2010 - 17 juin 2010 à 16:38
Ericbzc Messages postés 17 Date d'inscription lundi 24 novembre 2008 Statut Membre Dernière intervention 13 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 ??

Merci pour vos lumières !
E.B

2 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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)
0
Ericbzc Messages postés 17 Date d'inscription lundi 24 novembre 2008 Statut Membre Dernière intervention 13 décembre 2010
17 juin 2010 à 23:58
Merci Jack ! c'est effectivement ce que je vais retenir pour mes futurs codes...

Au passage, puis je abuser en te demandant selon toi s'il vaut mieux utiliser un bouton de commande Formulaire ou ActiveX.

Est ce qu'il y a des cas de figures où l'un est préférable à l'autre ?

Merci encore
E.B
0
Rejoignez-nous