Jpeg69
Messages postés28Date d'inscriptionvendredi 9 mars 2007StatutMembreDernière intervention 8 février 2008
-
22 mai 2007 à 11:04
Jpeg69
Messages postés28Date d'inscriptionvendredi 9 mars 2007StatutMembreDernière intervention 8 février 2008
-
24 mai 2007 à 17:34
Bonjour,
Selon l'aide d'Excel, pour utiliser une plage de cellule avec l'instruction Cells, il faut utiliser l'instruction Range.
Exemple :
Range( Cells(1,1), Cells(2,2) )
Cependant, ma macro n'accepte pas : Range( Cells(1,1), Cells(2,2) ).Select ou Range( Cells(1,1), Cells(2,2) ).ClearContents
Je me demande alors où est le problème.
Merci d'avance.
A voir également:
Instruction incorrecte à l'extérieur d'une procédure
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 22 mai 2007 à 12:12
Salut,
Tu es sûr que c'est la car je viens de testé sur Excel 2000 et ca semble fonctionner. (si toutefois ton fichier possède une feuille nommée Feuil1
Tyu peux essayer ceci.
Index = 2
Worksheets("Feuil1").Range("G" & CStr(Index * 6), "J" & CStr(Index * 6)).ClearContents
, ----
[code.aspx?ID=41455 By Renfield]
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 22 mai 2007 à 11:15
Bonjour,
Réflexe élémentaire :
sers-toi de ton enregistreur de macro ==>> fais une sélection quelconque ===>> ferme ===> édikte la macro ===>> tu sauras ainsi comment écrit la chose Monsieur VBA !
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 22 mai 2007 à 11:23
Et répondre en même temps à la question : ton code est situé dans la même feuille que les cellules ou le range que tu tentes d'appeler ? Sinon, pour bien faire les choses, précise la feuille avec, quelque chose du style :
Et sinon, comme d'hab. Message d'erreur ? A quel endroit de ton code ? etc etc ...
jmfmarques : Je ne suis pas sûr que l'éditeur de Macro fonctionne dans ce cas, parce que, comme on sélectionne la plage directement, il va donner la plage sous une forme simple genre Range("A1:B10"); la syntaxe avec des Cells imbriqués n'est utilisée qu'en pur VBA il me semble.
Jpeg69
Messages postés28Date d'inscriptionvendredi 9 mars 2007StatutMembreDernière intervention 8 février 2008 22 mai 2007 à 11:23
Le problème c'est que j'utilise des variable pour connaître le numéro de ligne et de colonne.
L'instruction Range ne prend pas des variable, mais l'instruction Cells oui.
Range( Cells(x,y) ).Clear fonctionne à merveille.
Vous n’avez pas trouvé la réponse que vous recherchez ?
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 22 mai 2007 à 11:28
"jmfmarques : Je ne suis pas sûr que l'éditeur de Macro fonctionne dans ce cas, parce que, comme on sélectionne la plage directement, il va donner la plage sous une forme simple genre Range("A1:B10"); la syntaxe avec des Cells imbriqués n'est utilisée qu'en pur VBA il me semble."
Et à moi il me semble que tu devais être absent, le jour d'une certaine distibution !!!
1) la macro de Monsieur VBA est écrite en VBA !
2) tu ne vois vraiment pas comment substituer le contenu de variables à "A1:B10" ???
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 22 mai 2007 à 11:43
Salut,
Quand allez vous comprendre que pour obtenir une aide précise, il faut que l'on ai le plus de billes possible....
C'est déjà bien d'avoir donné l'erreur mais tu pourrais donner le code qui te donne cette erreur et les valeur des variables à l'instant de cette erreur
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 22 mai 2007 à 15:15
615490
jmfmarques : Je me suis mal exprimé. Quand je disais "pur VBA", je voulais dire qu'en allant directement dans l'Editeur taper avec ses petits doigts boudinés les quelques lignes de code aptes à faire notre bonheur. Bien sûr que l'éditeur de macro va fonctionner pour obtenir ce qu'il veut, par contre, jamais au grand jamais il n'écrira la définition d'une cellule avec cette syntaxe (ou alors effectivement, j'étais absent le jour de la distribution)
Pour la simple et bonne raison qu'avec l'éditeur de macro, on ne peut pas écrire de boucle pour défiler toute les cellules d'une plage.
Je vois très bien comment substituer les coordonnées d'une plage par les références de cellules, mais, et c'est ça qui est bien avec le VBA, tu peux remplacer des bouts de code par leur équivalent et relancer la macro aussitôt, et quand même parfois te retrouver avec des erreurs d'exécution '9' bien connue. Après, tout dépend du code et là, il nous manque plein de choses pour comprendre.
=1001945 Jpeg69 : Ton exemple
Index = 2
Worksheets("Feuil1").Range( Cells( Index * 6, 7 ), Cells( Index * 6, 10 ) ).ClearContents
Il manque des choses. De mémoire, il me semble avoir déjà eu ce problème, si ta variable Index est de type String, ça plante, il faut un Integer pour que cela fonctionne, donc soit modifier le type de ta variable, soit l'encadrer d'un Cint( ).
Autrement, ce code fonctionne très bien sous EXCEL 2003 à condition bien entendu que le code soit attaché à "Feuil1". Si ce code se trouve par exemple dans "Feuil2" et que tu veuilles supprimer des cellules dans "Feuil1", c'est insuffisant, il faudrait :
Worksheets("Feuil1").Range( Worksheets("Feuil1").Cells( Index * 6, 7 ), Worksheets("Feuil1").Cells( Index * 6, 10 ) ).ClearContents
Jpeg69
Messages postés28Date d'inscriptionvendredi 9 mars 2007StatutMembreDernière intervention 8 février 2008 24 mai 2007 à 17:34
Ton code marche à la perfection 89254 jrivet !! Merci !
Réctification =528680 Molenn , ma macro exécutait ce code en allant chercher ces cellules dans une autre feuille.
Si c'est ce que tu entend par " exécuter au bon endroit " , effectivement j'avais tous faux.