Modifier cette macro

  • Initiateur de la discussion Initiateur de la discussion Domi
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

D

Domi

Guest
Bonjour,

Cette macro que j'ai trouvé sur ce site a pour but d'effectuer un tri aléatoire de la colonne A à partir de la cellule A1.
Or, moi, pour un souci de présentation, je dois effectuer un tri de la colonne C à partir de la cellule C4.

Voyez-vous comment modifier ce code :

Sub TriColonneAleatoire()
Dim Val As Range
Dim Lig As Byte
Dim Tableau()
Dim Tableau2()
Dim i As Byte, j As Byte, k As Byte
Dim Aleat As Integer

Lig = Range('A65536').End(xlUp).Row
ReDim Tableau(Lig)
For Each Val In Range('A1:A' & Lig)
Tableau(Val.Row - 1) = Val
Next Val

For i = 1 To Lig
Randomize
Aleat = Int(Rnd * UBound(Tableau)) + 1
Cells(i, 1) = Tableau(Aleat - 1)

ReDim Tableau2(Lig - i)

For j = 1 To Lig - i
k = 0
If j >= Aleat Then k = 1
Tableau2(j - 1) = Tableau(j + k - 1)
Next j
ReDim Tableau(Lig - i)
For j = 1 To Lig - i
Tableau(j - 1) = Tableau2(j - 1)
Next j

Next i

End Sub

Je vous joint aussi l'exemple trouver sur ce site en pièce jointe.

------------------------
Merci d'avance [file name=TriAleatoireColonne.zip size=11845]Lien supprimé
 

Pièces jointes

Dernière modification par un modérateur:
Bonjour

Modifies ces lignes ( j'ai pas tester)

Lig = Range('A65536').End(xlUp).Row
ReDim Tableau(Lig)
For Each Val In Range('A1:A' & Lig)
Tableau(Val.Row - 1) = Val
Next Val

par

Lig = Range('C65536').End(xlUp).Row-3
ReDim Tableau(Lig)
For Each Val In Range('C4:C' & Lig)
Tableau(Val.Row - 1) = Val
Next Va

et

Cells(i, 1) = Tableau(Aleat - 1)

par

Cells(i, 1) = Tableau(Aleat - 1)l
 
Re

Là voilà modifiée mais cette fois tester

Option Explicit

Sub TriColonneAleatoire()
Dim Val As Range
Dim Lig As Byte
Dim Tableau()
Dim Tableau2()
Dim i As Byte, j As Byte, k As Byte
Dim Aleat As Integer

Lig = Range('C65536').End(xlUp).Row - 3
ReDim Tableau(Lig)
For Each Val In Range('C4:C' & Lig + 3)
Tableau(Val.Row - 4) = Val
Next Val

For i = 1 To Lig
Randomize
Aleat = Int(Rnd * UBound(Tableau)) + 1
Cells(i + 3, 3) = Tableau(Aleat - 1)

ReDim Tableau2(Lig - i)

For j = 1 To Lig - i
k = 0
If j >= Aleat Then k = 1
Tableau2(j - 1) = Tableau(j + k - 1)
Next j
ReDim Tableau(Lig - i)
For j = 1 To Lig - i
Tableau(j - 1) = Tableau2(j - 1)
Next j

Next i


Bon WE
 
j'ai un souccis avec cette macro de capaciter
Sub TriColonneAleatoire()
Dim Val As Range
Dim Lig As Byte
Dim Tableau()
Dim Tableau2()
Dim i As Byte, j As Byte, k As Byte
Dim Aleat As Integer

Lig = Range('A65536').End(xlUp).Row
ReDim Tableau(Lig)
For Each Val In Range('A1:A' & Lig)
Tableau(Val.Row - 1) = Val
Next Val

For i = 1 To Lig
Randomize
Aleat = Int(Rnd * UBound(Tableau)) + 1
Cells(i, 1) = Tableau(Aleat - 1)

ReDim Tableau2(Lig - i)

For j = 1 To Lig - i
k = 0
If j >= Aleat Then k = 1
Tableau2(j - 1) = Tableau(j + k - 1)
Next j
ReDim Tableau(Lig - i)
For j = 1 To Lig - i
Tableau(j - 1) = Tableau2(j - 1)
Next j

Next i

End Sub

le probleme viens de cette ligne
Lig = Range('A65536').End(xlUp).Row

merci de bien m'aider
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
8
Affichages
206
  • Question Question
Microsoft 365 Erreur UBound
Réponses
4
Affichages
121
Réponses
4
Affichages
392
Réponses
3
Affichages
84
Réponses
10
Affichages
197
Réponses
6
Affichages
72
Réponses
8
Affichages
421
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
538
Retour