Masko972
Messages postés5Date d'inscriptionjeudi 3 août 2006StatutMembreDernière intervention 3 août 2006
-
3 août 2006 à 11:45
Masko972
Messages postés5Date d'inscriptionjeudi 3 août 2006StatutMembreDernière intervention 3 août 2006
-
3 août 2006 à 14:24
Bonjour,
Je Recherche une macro pour saisir dans une cellule le contenu de plusieurs cellules précédemment sélectionnées et que chaque donnée soit séparée par un slash.
Merci d'avance a celui qui trouvera cette macro qui me permettra de trier plus de 7000 données.
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 3 août 2006 à 12:15
Salut,
Tiensessaies ceci
NOTE: Tu aurais pu trouve asse rapidement en prenant le temps de chercher.
Dim UCell As Range
Dim Contenu As String
'Selectionne la plage de cellule A2 a L47
ActiveSheet.Range("A2:L47").Select
Contenu = vbNullString
'POur chaque cellules contenu dans la plage
For Each UCell In Selection
Contenu = Contenu & UCell.Value & "/"
Next
'Affiche dans A1 tout les contenu des cellules de la plage A2 L47 separe par un /
ActiveSheet.Range("A1").Value = Contenu
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 3 août 2006 à 13:35
Je tente de te comprendre :
"Il faudrait que je puisse déclarer dans la macro que la plage de cellule A2 L47 soit une plage de cellules que je selectionne lors de l'execution de la macro."
Une plage que tu sélectionnes lors de l'exécution de la macro ? Ca veut dire que tu sélectionnes avec ta souris une plage dans la feuille Excel, puis que tu lances la macro ?
Dans ce cas, il te suffit de supprimer ActiveSheet.Range("A2:L47").Select du bout de code, ainsi, ce qui sera défini par Selection dans le code, sera la plage sélectionnée avant le lancement de la macro.
"Et que A1 soit la cellule sur laquelle je suis lors de l'execution de la macro afin que ca soit celle la qui sera remplie."
A part le fait que ce ne soit pas très français ^^, si je te suis bien, ce que tu veux, c'est que lorsque tu lances la requête, le résultat s'affiche dans la cellule "A1" de la feuille active. Ben, tu laisses le code tel qu'il est : tu n'as pas besoin de te mettre sur A1 pour que ça fonctionne, le code, tel qu'il est écrit, va remplir systématiquement la cellule A1 de la feuille active.
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 3 août 2006 à 14:07
Oui mais là, tu vas avoir un pb avec une seule macro ^^
En effet, dans les macros : le selection correspond a ce que tu as donc sélectionné avec le curseur avant le lancement :
Tu ne pourras pas désigner à la fois la plage A2:L47 et la cellule A1 pour que ta macro choisisse ce qui lui conviendra en fonction du bout de code.
La solution ? Tu coupes en 2 :
Tu sélectionnes la plage de données.
Tu lances la Macro 1 : le traitement se lance et au lieu de stocker le contenu dans la cellule A1, tu la stockes dans une variable publique (ou pourquoi pas si tu as envie, dans une autre cellule d'une feuille temporaire de ton fichier Excel).
Sélection de la cellule où tu veux copier le résultat.
Tu lances la Macro 2 : et tu remplis la cellule avec le contenu de ta variable/ de ta cellule de données temporaires, etc ...
Le code sera quelque chose du style :
Masko972
Messages postés5Date d'inscriptionjeudi 3 août 2006StatutMembreDernière intervention 3 août 2006 3 août 2006 à 12:53
La formule fonctionne a merveille.
J'ai oublier de préciser qu'il faut que je fasse ca plusiseurs fois de suite pour plusieurs documents.
Il faudrait que je puisse déclarer dans la macro que la plage de cellule A2 L47 soit une plage de cellules que je selectionne lors de l'execution de la macro.
Et que A1 soit la cellule sur laquelle je suis lors de l'execution de la macro afin que ca soit celle la qui sera remplie.
Merci
Dim UCell As Range
Dim Contenu As String
'Plage a saisir
ActiveSheet.Range("A2:L47").Select
Contenu = vbNullString
'POur chaque cellules contenu dans la plage
For Each UCell In Selection
Contenu = Contenu & UCell.Value & "/"
Next
'Affiche dans la cellule (sur lequelle je suis tout les contenu des cellules de la plage saisie separe par un /
ActiveSheet.Range("A1").Value = Contenu
Masko972
Messages postés5Date d'inscriptionjeudi 3 août 2006StatutMembreDernière intervention 3 août 2006 3 août 2006 à 13:50
Tu as raison je me suis vraiment mal exprimé. Mais c'est dur a expliquer.
Merci pour le premier problème qui est à présent résolu grace a toi.
En ce qui concerne le second probleme:
Ce que j'essayais de dire, c'est que je veux que la cellule qui sera remplie une fois la marco exécutée, soit une cellule sélectionné juste avant l'execution de la macro.
Ce qui m'embete c'est que je doit a chaque fois retourner dans la macro pour modifier A1 par une autre cellule et ainsi de suite.