Excel Downloads
Forum

Précédent   Excel Downloads Forums > Excel > Forum Excel


Réponse
 
LinkBack Outils de la discussion
Vieux 12/11/2005, 09h33   #1 (permalink)
Domi
Guest
 
Messages: n/a
Par défaut Modifier cette macro

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]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/TriAleatoireColonne.zip[/file]
Fichiers attachés
Type de fichier : zip TriAleatoireColonne.zip (11,6 Ko, 9 affichages)
  Réponse avec citation
ANNONCES
Vieux 12/11/2005, 09h38   #2 (permalink)
Super Moderator
 
Avatar de PascalXLD
 
Date d'inscription: février 2005
Localisation: Rennes
Version Excel : Excel 2000 (PC)
Messages: 8 236
Par défaut Re:Modifier cette macro

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
__________________
Pascal(Visitez mon Blog Photo)

Vous pouvez devenir "Supporter XLD", plus de renseignements ICI
PascalXLD est déconnecté   Réponse avec citation
Vieux 12/11/2005, 09h45   #3 (permalink)
Domi
Guest
 
Messages: n/a
Par défaut Re:Modifier cette macro

Salut à toi, merci pour ton aide.

Erreur de syntaxe sur la ligne :

Cells(i, 1) = Tableau(Aleat - 1)l
  Réponse avec citation
Vieux 12/11/2005, 09h48   #4 (permalink)
Super Moderator
 
Avatar de PascalXLD
 
Date d'inscription: février 2005
Localisation: Rennes
Version Excel : Excel 2000 (PC)
Messages: 8 236
Par défaut Re:Modifier cette macro

RE

oups j'avais oublié une ligne

Tableau(Val.Row - 1) = Val

par

Tableau(Val.Row - 4) = Val
__________________
Pascal(Visitez mon Blog Photo)

Vous pouvez devenir "Supporter XLD", plus de renseignements ICI
PascalXLD est déconnecté   Réponse avec citation
Vieux 12/11/2005, 09h52   #5 (permalink)
Domi
Guest
 
Messages: n/a
Par défaut Re:Modifier cette macro

Ok pour cette ligne.

Et pour l'erreur de syntaxe de la ligne :

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

Tu vois l'erreur ?
  Réponse avec citation
Vieux 12/11/2005, 09h53   #6 (permalink)
Super Moderator
 
Avatar de PascalXLD
 
Date d'inscription: février 2005
Localisation: Rennes
Version Excel : Excel 2000 (PC)
Messages: 8 236
Par défaut Re:Modifier cette macro

Excuse j'ai voulu faire ça sans tester et voilà je me suis planté

je suis dessus là mais avec le fichier
__________________
Pascal(Visitez mon Blog Photo)

Vous pouvez devenir "Supporter XLD", plus de renseignements ICI
PascalXLD est déconnecté   Réponse avec citation
Vieux 12/11/2005, 09h55   #7 (permalink)
Super Moderator
 
Avatar de PascalXLD
 
Date d'inscription: février 2005
Localisation: Rennes
Version Excel : Excel 2000 (PC)
Messages: 8 236
Par défaut Re:Modifier cette macro

Re

Là voilà modifiée mais cette fois tester

Citation:
OptionExplicit

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

Lig = Range('C65536').End(xlUp).Row - 3
ReDim Tableau(Lig)
ForEach 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
__________________
Pascal(Visitez mon Blog Photo)

Vous pouvez devenir "Supporter XLD", plus de renseignements ICI
PascalXLD est déconnecté   Réponse avec citation
Vieux 12/11/2005, 10h14   #8 (permalink)
Domi
Guest
 
Messages: n/a
Par défaut Re:Modifier cette macro

Parfait !!

Merci BEAUCOUP !!
  Réponse avec citation
Vieux 08/02/2006, 20h52   #9 (permalink)
bonjour
Guest
 
Messages: n/a
Par défaut Re:Modifier cette macro

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
  Réponse avec citation
Vieux 08/02/2006, 21h00   #10 (permalink)
Super Moderator
 
Avatar de PascalXLD
 
Date d'inscription: février 2005
Localisation: Rennes
Version Excel : Excel 2000 (PC)
Messages: 8 236
Par défaut Re:Modifier cette macro

Bonjour

modifies la déclaration

Dim Lig As Byte

par

Dim Lig As Integer

voir

Dim Lig As Long

Bon courage
__________________
Pascal(Visitez mon Blog Photo)

Vous pouvez devenir "Supporter XLD", plus de renseignements ICI
PascalXLD est déconnecté   Réponse avec citation
ANNONCES
Réponse

Liens sociaux

Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +2. Il est actuellement 07h07.


(C) 2006 Excel Downloads