Groargreugro
Messages postés29Date d'inscriptionjeudi 23 février 2006StatutMembreDernière intervention12 décembre 2006
-
10 mars 2006 à 17:56
Groargreugro
Messages postés29Date d'inscriptionjeudi 23 février 2006StatutMembreDernière intervention12 décembre 2006
-
16 mars 2006 à 08:46
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 15 mars 2006 à 22:55
Bonsoir,
Je comprends beaucoup mieux ton pb. Et tu as trouvé la solution... C'est un pb que j'ai déjà remarquer pour 97, et comme toi j'avais aussi remarqué qu'il avait disparu en version 2003... En fait il faut penser "focus"... C'est à dire, lorsque tu cliques sur le bouton, tu fais perdre le focus à la feuille (à toutes les feuilles par de là). Ensuite tu appliques une instruction Range (c'est à dire au niveau des cellules) et comme aucune feuille n'est active, VBA se trouve planté. Car il faut, une feuilles actives pour appliquer Range.... La solution que tu as trouvé est une possibilité, mais si tu m'as compris, tu vois qu'on peut en trouver d'autres... par exemple :
faire dans le module :
Sub essai()
ActiveCell.Select ' 1er sol
'ActiveCell.Activate ' autre sol
'ActiveSheet.Select 'autre sol
With Sheets("Feuil2")
'.Activate ' autre sol
'.Select ' autre sol
.Cells.Clear
.Cells(2, 2) = "Essai"
End With
End Sub
Private Sub CommandButton1_Click()
Call essai
End Sub
qui ressemble à ce que tu as fait...
Le point important à remarquer, c'est ton pb se produit seulement dans le cas où tu mets le bouton sur la feuille.
Maitenant si tu utilises une Userfom, alors tu n'as plus besoin d'activer une cellule, car une userform aura un focus comme "indépendante" de l'application. Ainsi, si tu mets une Userform1, avec un bouton avec le code d'appel à essai tu ne renconteras plus ce pb. A noter, que l'appel pourrait aussi être mis après un double click surla feuille 1, soit :
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
essai
End Sub
avec
Sub essai()
With Sheets("Feuil2")
.Cells.Clear
.Cells(2, 2) = "Essai"
End With
End Sub
Groargreugro
Messages postés29Date d'inscriptionjeudi 23 février 2006StatutMembreDernière intervention12 décembre 2006 10 mars 2006 à 22:56
Effectivement, je ne veux pas selectionner ma feuille.
Ce qui est étrange, c'est que oui ca marche quand la feuille est active sous Excel.
Mais si je selectionne un autre onglet que "Résultat_Import" et que je relance ma macro, la, ça plante.
Normalement apres un bon Week end à faire autre chose, je vais arriver lundi au boulot et faire "mais oui c'est ca !".
Bref, merci pour vos réponses, je vous tiendrais au courant.
Et bon week-end.
Gro.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Groargreugro
Messages postés29Date d'inscriptionjeudi 23 février 2006StatutMembreDernière intervention12 décembre 2006 14 mars 2006 à 09:35
Moi, mon code c'est "Sheets("feuil2").Cells.Clear", pour tout effacer (valeur/format/...)
Je viens de créer un nouveau document xls dans lequel j'ai créé un bouton en "feuil1", à l'aide de l'éditeur en haut.
Avec pour Caption : "Efface feuil2"
et pour code (commentaire important) :
Private Sub CommandButton1_Click()
'Cells(1, 1).Select
essai
End Sub
J'ai créé un module dans lequel j'ai mis :
Sub essai()
With Sheets("Feuil2")
.Cells.Clear
.Cells(2, 2) = "Essai"
End With
End Sub
Après, je clic sur mon bouton, et ça me provoque le bug.
J'ai trouvé une solution qui tiens un peu du bidouillage, je dis ça parce que je ne la comprend pas :
Elle est dans mon code plus haut : c'est la ligne en commentaire. Ma solution c'est de selectionner une cellule avant d'appeller la méthode Clear, dans la même feuille ou non.
Si on a jamais rien selectionné dans le code avant d'appeller cette fonction, ca plante.
Pour info, j'ai Excel 97.
J'essairai ce soir chez moi où j'ai le 2003.
Groargreugro
Messages postés29Date d'inscriptionjeudi 23 février 2006StatutMembreDernière intervention12 décembre 2006 14 mars 2006 à 16:02
Je viens de tester mon code sur une autre version d'Excel, ca marche.
Donc ca doit etre un bug propre à 97...
Maintenant la question est, pourquoi dans mon entreprise qui compte plusieurs centaine de personnes, tout le monde tourne sur 97, sauf un gars qui n'est même pas chef ? Un autre mystère insondable...
Merci pour le coup de main,
Si tu trouve le pourquoi (du "cells.clear") ca m'interesse toujours.
Sinon, si ça arrive à quelqu'un j'espere que ca aidera.
Groargreugro
Messages postés29Date d'inscriptionjeudi 23 février 2006StatutMembreDernière intervention12 décembre 2006 16 mars 2006 à 08:46
Comme mon appli est encore loin d'être terminée, les boutons c'était juste pour tester une ébauche de menu pour voir comment cela le programme se comportait, une sorte de version bêta pour les utilisateurs de mon service en quelque sorte...
Ne sachant pas qu'un bouton est désolidarisé de la feuille qui l'héberge, je ne voyais pas le problème.
Je pensais m'attaquer au Userform plus tard, si te me dis que ça marche, c'est impec.
Merci en tout cas pour l'explication et bonne journée.