Sélection de plages Excel VBA ...

cs_Hector78 Messages postés 62 Date d'inscription mercredi 3 novembre 2004 Statut Membre Dernière intervention 5 mai 2010 - 1 juin 2005 à 17:14
cs_Hector78 Messages postés 62 Date d'inscription mercredi 3 novembre 2004 Statut Membre Dernière intervention 5 mai 2010 - 3 juin 2005 à 10:40
Hello !

Je dois trouver une alternative aux refedit, car ils produisent des plantages et des effets de bords assez impressionnant. Est-ce que quelqu'un saurait comment permettre à l'utilisateur de sélectionner ses plages et d'insérer le tout dans une textbox ?

Je sais que c'est possible d'intercepter les mouvement de souris à l'aide de l'événement SheetSelectionChange de l'objet excel.application. Withevents doit aussi être utilisé en quelque part.

Après différents tests, je n'arrive à rien, et ne comprend pas comment utiliser ces évènements et objets. Est-ce que qqun pourrais me donner un coup de main ?

Merci pour votre aide.
Hector

11 réponses

valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
1 juin 2005 à 19:01
Lut,
Tu peux utiliser une inputBox
Dim Myrange
Set Myrange = Application.InputBox("Sélectionnez une plage de cellules", Type:=8)
MsgBox Myrange.Address

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
cs_Hector78 Messages postés 62 Date d'inscription mercredi 3 novembre 2004 Statut Membre Dernière intervention 5 mai 2010
1 juin 2005 à 21:53
Hello !

Merci pour la réponse rapide ... j'ai déjà exploré cette solution avec l'inputbox, et ça tourne bien ... par contre de devrais personnaliser l'interface de saisie ... je ne peux donc pas utiliser cette option ... il me faut vraiment une solution basée sur un userform, avec une interception des déplacements souris ...

Une idée comment procéder ?
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
1 juin 2005 à 22:12
Re,
Tu peux intercepter le changement de plage de la sorte:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If UserForm1.Visible = True Then
UserForm1.Label1.Caption = Sh.Name & "!" & Target.Address
End If
End Sub

Bien sur tu devras l'adapter à ton cas

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
1 juin 2005 à 22:17
Oui ne pas oublier de mettre ta userform non modale
UserForm1.Show False

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Hector78 Messages postés 62 Date d'inscription mercredi 3 novembre 2004 Statut Membre Dernière intervention 5 mai 2010
2 juin 2005 à 08:07
Hello !

Merci pour le code.

En guise de test, j'ai créé un nouveau user form (Userform1) avec le composant label (label1). J'ai collé le code précédement proposé dans la source, puis lancé le formulaire en non modal. Mais rien n'apparaît dans mon label, lors du déplacement de la souris ... Que faut-il ajouter, à ce code pour qu'il tourne ?

Merci.
Hector
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
2 juin 2005 à 10:26
Fait un test en sélectionnant des cellules sur ta feuille !!
C'est ce que tu veux non ? si j'ai bien compris!!

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
cs_Hector78 Messages postés 62 Date d'inscription mercredi 3 novembre 2004 Statut Membre Dernière intervention 5 mai 2010
2 juin 2005 à 13:52
Effectivement, et c'est bien ce que j'ai fait. Je sélectionne des cellules de la feuille, mais rien ne se passe ...
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
2 juin 2005 à 17:56
En fait je pense que tu as collé le code au mauvais endroit .....
tu dois le coller dans le module de ThisWorkBook et non pas sur ta UserForm
donc tu ouvres le module de thisWorkBook et tu colles le code dans l'événement
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object.........

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
cs_Hector78 Messages postés 62 Date d'inscription mercredi 3 novembre 2004 Statut Membre Dernière intervention 5 mai 2010
3 juin 2005 à 08:32
Hello !

Merci pour le message !
Effectivement c'était pas au bon endroit et pour l'utiliser depuis un form il faut faire :

Private WithEvents m_oExcelApp As Excel.Application
Private Sub UserForm_Initialize()
Set m_oExcelApp = Excel.Application
End Sub

J'ai encore un petit soucis. Comment modifier le type de sélection ? je ne voudrais pas utiliser la selection de type surbrillance, mais celle du type copier/coller c'est à dire une selection "clignotante et tournante" ?

Merci.
Hector
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
3 juin 2005 à 09:57
Tu codes en VBA ou en VB ?

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
cs_Hector78 Messages postés 62 Date d'inscription mercredi 3 novembre 2004 Statut Membre Dernière intervention 5 mai 2010
3 juin 2005 à 10:40
en VBA
0
Rejoignez-nous