cs_nico39
Messages postés56Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention 4 octobre 2006
-
19 sept. 2006 à 15:15
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 2011
-
11 oct. 2006 à 15:24
Bonjour,
je souhaite rendre un de mes programmes sous Excel les plus "flexibles" possibles, et souhaiterais savoir comment récupérer les coordonnées d'une cellule (ou zone de cellule) sélectionnée par l'utilisateur.
J'avais dans l'esprit d'utiliser la fenêtre d'assistance qui apparaît lorsque qu'on écrit une formule sous Excel (celle(s) où on vous demande quelles cellules sont concernées par la formule et où on peut sélectionner avec la souris la zone choisie).
Je souhaiterais alors connaître la (les) commande(s) permettant d'utiliser cette fenêtre, c-à-d de la faire apparaître, de choisir son titre et commentaire, et de récupérer les coordonnées des cellules choisies par l'utlisateur.
J'avais pensé regardé quelquechose comme Application.GetCells (comme il existe Application.GetOpenFileName pour les dossiers à ouvrir), mais sans succès.
cs_nico39
Messages postés56Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention 4 octobre 2006 21 sept. 2006 à 11:52
Bonjour,
Merci Mortalino pour ta réponse.
J'ai essayé ta méthode: j'ai créé un petit UserForm avec un RefEdit, qui récupère les coordonnées d'une cellule (ou d'un groupe de) sélectionnée. Tout marche bien, mais je n'arrive pas à faire passer les données récupérées dans mon programme principal (qui est sur un autre module).
Je n'ai ni envie de recopier tout mon programme dans le module de l'UserForm, ni de couper mon programme principal en deux sous-programmes, dont l'un récupérerait en argument ces données et continuerait le programme.
J'ai essayé de déclarer une variable globale, qui prend sa valeur dans le module de l'UserForm et qui est utilisée ensuite dans le reste des autres modules. Mais cette dernière solution ne semble pas marcher: la variable n'a pas (ou plus) de valeur dans mon module principal alors qu'elle en avait une dans le module du UserForm.
Aurais-tu une idée pour un passage de paramètres de mon UserForm à mon programme principal ?
Merci encore pour ton aide.
A+
Nicolas.
P.S.: je n'ai pas encore pu lire ton code sur les UserForms et les RefEdit.
cs_nico39
Messages postés56Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention 4 octobre 2006 22 sept. 2006 à 11:00
Salut Mortalino,
Merci pour la réponse. J'arrive maintenant à récupérer la valeur de mon RefEdit dans ma macro principale. Seulement, l'adresse recueillie est du format : Feuil1!$A$1. Je ne peux donc pas l'appliquer directement dans un Range("" & RefEdit1.Value & ""): une erreur 404 survient. De plus, ta méthode (même avec le Set devant) ne fonctionne pas: objet non défini pour rMaPlage .
Y a-t-il un paramétrage à faire dans le contrôle RefEdit ou faut-il se créer une 'tite fonction, pour séparer nom de feuille et coordonnées de cellule et définir ainsi correctement un Range
cs_nico39
Messages postés56Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention 4 octobre 2006 25 sept. 2006 à 08:49
Merci Mortalino.
Ta méthode fonctionne très bien.
Pour info, pour récupérer séparés nom de feuille et coordonnées de cellule, voici une petite fonction:
Dans le code:
...
reference = RefEdit1.Value
Set c = Worksheets(GetStringPart(reference, "!", 1)).Range(GetStringPart(reference, "!", 2))
...
End sub
'Fonction pour récupérer une partie d'une chaîne de caractère
Function GetStringPart(strInput As String, strDelimiter As String, intPart As Integer) As String
Dim varStrings As Variant
varStrings = Split(strInput, strDelimiter, -1, vbBinaryCompare)
On Error Resume Next
GetStringPart = Trim(varStrings(intPart - 1))
On Error GoTo 0