OVH Cloud OVH Cloud

Comment modifier ma Macro Excel ? (débutant)

4 réponses
Avatar
nospam
Bonjour à tous,

Un sympathique personne de ce forum m'a écrit la macro "tt" Excel
suivante (voir + bas).

En gros, cette macro mélange au hasard les cellules sélectionnées
avec la souris.

Plutôt que de les sélectionner avec la souris, je souhaite indiquer
directement dans ce source le "rectangle" ou le "carré" de cellules
choisi.

Exemple : Les cellules dans le "rectangle" B5 à D12.

Comment modifier ce source en conséquence ?

Merci pour votre aide,

Bien Cordialement,

Christian

---------------------------------------------

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Call tt
End Sub

Sub tt()
ReDim t(0)
total = 0

For i = 1 To Selection.Areas.Count
For j = 1 To Selection.Areas(i).Count
'Création du tableau t() contenant les addresses des cellules de la sélection
total = total + 1
ReDim Preserve t(total)
t(total) = Selection.Areas(i)(j).AddressLocal(0, 0)
Next
Next

r = total

For i = 1 To Selection.Areas.Count
For j = 1 To Selection.Areas(i).Count
'Echanger les valeurs de 2 adresses
temp = Selection.Areas(i)(j).Value
a = t(Int((r * Rnd) + 1))
Selection.Areas(i)(j).Value = Range(a).Value
Range(a).Value = temp
Next
Next
End Sub

4 réponses

Avatar
JLuc
nospam avait soumis l'idée :
Bonjour à tous,

Un sympathique personne de ce forum m'a écrit la macro "tt" Excel
suivante (voir + bas).

En gros, cette macro mélange au hasard les cellules sélectionnées
avec la souris.

Plutôt que de les sélectionner avec la souris, je souhaite indiquer
directement dans ce source le "rectangle" ou le "carré" de cellules
choisi.

Exemple : Les cellules dans le "rectangle" B5 à D12.

Comment modifier ce source en conséquence ?

Merci pour votre aide,

Bien Cordialement,

Christian

---------------------------------------------

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
' rajoute :

Range("B5:D12").Select
' Attention !! a chaque fois que tu va te deplacer dans la feuille,
cette macro s'execute 8-o
Call tt
End Sub


Sub tt()
ReDim t(0)
total = 0

For i = 1 To Selection.Areas.Count
For j = 1 To Selection.Areas(i).Count
'Création du tableau t() contenant les addresses des cellules de la
sélection
total = total + 1
ReDim Preserve t(total)
t(total) = Selection.Areas(i)(j).AddressLocal(0, 0)
Next
Next

r = total

For i = 1 To Selection.Areas.Count
For j = 1 To Selection.Areas(i).Count
'Echanger les valeurs de 2 adresses
temp = Selection.Areas(i)(j).Value
a = t(Int((r * Rnd) + 1))
Selection.Areas(i)(j).Value = Range(a).Value
Range(a).Value = temp
Next
Next
End Sub



--
JLuc

Avatar
docm
Bonjour.

Crée un objet Range contenant tes cellules. Par exemple:
Set Rectangle = Range("A1:C4")

Remplace dans la procédure TT le mot Selection par le mot Rectangle.
Ce qui donnera ceci:

Sub tt()
ReDim t(0)
total = 0
Set Rectangle = Range("A1:C4")
For i = 1 To Rectangle.Areas.Count
For j = 1 To Rectangle.Areas(i).Count
'Création du tableau t() contenant les addresses des cellules de l'objet Rectangle
total = total + 1
ReDim Preserve t(total)
t(total) = Rectangle.Areas(i)(j).AddressLocal(0, 0)
Next
Next

r = total

For i = 1 To Rectangle.Areas.Count
For j = 1 To Rectangle.Areas(i).Count
'Echanger les valeurs de 2 adresses
temp = Rectangle.Areas(i)(j).Value
a = t(Int((r * Rnd) + 1))
Rectangle.Areas(i)(j).Value = Range(a).Value
Range(a).Value = temp
Next
Next
End Sub

docm


"nospam" a écrit dans le message de news:
Bonjour à tous,

Un sympathique personne de ce forum m'a écrit la macro "tt" Excel
suivante (voir + bas).

En gros, cette macro mélange au hasard les cellules sélectionnées
avec la souris.

Plutôt que de les sélectionner avec la souris, je souhaite indiquer
directement dans ce source le "rectangle" ou le "carré" de cellules
choisi.

Exemple : Les cellules dans le "rectangle" B5 à D12.

Comment modifier ce source en conséquence ?

Merci pour votre aide,

Bien Cordialement,

Christian

---------------------------------------------

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Call tt
End Sub

Sub tt()
ReDim t(0)
total = 0

For i = 1 To Selection.Areas.Count
For j = 1 To Selection.Areas(i).Count
'Création du tableau t() contenant les addresses des cellules de la sélection
total = total + 1
ReDim Preserve t(total)
t(total) = Selection.Areas(i)(j).AddressLocal(0, 0)
Next
Next

r = total

For i = 1 To Selection.Areas.Count
For j = 1 To Selection.Areas(i).Count
'Echanger les valeurs de 2 adresses
temp = Selection.Areas(i)(j).Value
a = t(Int((r * Rnd) + 1))
Selection.Areas(i)(j).Value = Range(a).Value
Range(a).Value = temp
Next
Next
End Sub




Avatar
nospam
Cool.. Merci Docm, çà marche impeccable :-)
Avatar
nospam
' rajoute :
Range("B5:D12").Select
' Attention !! a chaque fois que tu va te deplacer dans la feuille, cette
macro s'execute 8-o
Call tt
End Sub


?? Je n'ai pas ce problème semble-t-il...