Réaliser une action sur des cellules distances sélectionnées auparavant

Richrag

XLDnaute Nouveau
Bonjour,

Je rencontre actuellement un petit soucis sur une macro et, comme je doute recevoir une illumination, j'en appelle au savoir divin des membres de mon site d'aide préféré !

Sur un fichier, je demande à des utilisateurs de sélectionner une cellule puis de lancer la macro, et la macro réalise une action sur la cellule => Jusque là, rien que ma petite tête ne sache faire.
Là où je sèche, c'est suite à la demande d'un de mes collègues : "Oui, mais si je sélectionne deux cellules, ou trois, ou quatre en même temps, tu es capable de me faire une action différente sur chaque ?"
Et là, ma foi... Passé le blocage intellectuel, la goutte de sueur froide dégoulinant lentement durant plus de dix minutes le long de ma colonne vertébrale, et la moitié de ma vie qui a défilé devant mes yeux, je me suis esquivé pour quitter cette conversation Ô combien tragique !

Ou, dit autrement : j'en appelle à votre sagesse pour savoir s'il est possible (et comment faire) pour réaliser une action dans plusieurs cellules séparées (exemple : A1 et B6).
Pas de fichier joint, car au final c'est faisable depuis un Excel vierge : sélectionnez deux cellules distantes, et insérez-y du texte...

A terme (pour les plus motivé), mon objectif est de récupérer les adresses de ces cellules sélectionnées (entre 2 et 10) dans des variables de mon code pour ensuite les réutiliser ultérieurement.


Comme à chaque fois que je parle, je pense qu'il est temps que je m'arrête avant de n'y plus rien comprendre moi-même ! Alors je remercie d'avance tous ceux qui voudront bien prendre le temps de résoudre mon problème, et encore plus ceux qui me feront pleurer de honte en m'annonçant une solution à ce problème qui me laisse pantois !


(PS : Je travaille sur un Excel 2007)
 

PMO2

XLDnaute Accro
Re : Réaliser une action sur des cellules distances sélectionnées auparavant

Bonjour,

Un truc du style
Code:
Sub aa()
Dim R As Range
Dim C As Range
If Not TypeName(Selection) = "Range" Then Exit Sub
Set R = Selection
For Each C In R
  Select Case C.Address
    Case "$A$1"
      C = "jaune"
    Case "$B$6"
      C = "vert"
  End Select
Next C
End Sub
Il faut d'abord sélectionner A1 et B6
 

Pièces jointes

  • pmo.xlsm
    16.6 KB · Affichages: 32

Richrag

XLDnaute Nouveau
Re : Réaliser une action sur des cellules distances sélectionnées auparavant

Bonjour PM02,

Ta solution est intéressante, mais ne convient pas exactement à mon problème. En effet, dans ton code, tu cite explicitement les cellules à sélectionner ("Case "$A$1""...) or, pour ma part, je souhaiterai que l'utilisateur puisse sélectionner n'importe quelles cellules du tableau, et je ne me vois pas noter, dans mon code, une ligne pour chaque cellule du tableau...

Tu trouveras ci-dessous un fichier pour mettre en image ce que je souhaite :
- En colonne, j'ai des horaires
- En ligne, j'ai des magasins
- En couleur, j'ai un exemple de ce que je voudrai sélectionné (sachant que je dois pouvoir sélectionner n'importe quelle cellule dans mes bordures)
- Etant un camion, je dois livrer ces 5 magasins dans l'ordre des horaires sélectionnés (01:00, 02:00, etc...)
- Mon objectif à terme : j'ai des Userforms qui se lancent, un pour chaque cellule sélectionné, et ce dans l'ordre des heures des cellules sélectionnées (01:00, 02:00, etc...) afin que je puisse indiquer que mon camion doit passer par ces magasins à cette heure-ci.

Bref, lorsque je sélectionne plusieurs cellules, ce qu'il me faudrait, c'est que l'adresse de CHAQUE CELLULE SELECTIONNEE se retrouve dans une variable, une variable par cellule, afin que je réutilise ces adresses ultérieurement dans mon code.

Merci d'avance, et encore merci pour ton test précédent...
 

Pièces jointes

  • Test.xlsx
    9.2 KB · Affichages: 33
  • Test.xlsx
    9.2 KB · Affichages: 26
  • Test.xlsx
    9.2 KB · Affichages: 27

PMO2

XLDnaute Accro
Re : Réaliser une action sur des cellules distances sélectionnées auparavant

Dans ce cas
Code:
Sub aa()
Dim R As Range
Dim maVariable As String
If Not TypeName(Selection) = "Range" Then Exit Sub
Set R = Selection
MsgBox R.Address

'''' pour illustrer (dans une variable)
maVariable = R.Address
MsgBox "La variable chaîne : " & maVariable
''''

End Sub
 

Discussions similaires