tortuegenie
Messages postés110Date d'inscriptionlundi 27 mars 2006StatutMembreDernière intervention21 octobre 2008
-
10 août 2006 à 10:26
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 2011
-
10 août 2006 à 16:11
C'est encore moi malheureusement je crois que le VB n'est pas fait pour moi
Quelqu'un peut me dire ce qui est faux dans mon code.
Dim LaCase As Range
Worksheets(4).Activate
ActiveSheet.Columns("A:A").Select
For Each LaCase In Selection
If (LaCase.Row >= 8) Then
Selection.Sort
End If
Next
Je veux trier la colonne A à partir de la ligne 7 et jusqu'à la fin dans l'ordre croissant des nombres.
Merci
Avec ce bout de code, il te reste une seule chose à faire, déterminer la dernièreligne de ta colonne à trier.
Ou alors, si tu ne veux pas t'embêter et que tu sais que tu n'auras pas plus d'un nb donné de lignes, tu mets directement "A7:A2000" par ex, les cellules vides étant à la fin quand tu tries.
Molenn.
P.S. : Un conseil, utilise l'assistant création de macro d'Excel. C'est très instructif. Le mieux, c'est en règle général d'utiliser l'assistant dès que tu peux, puis avec l'éditeur, d'aller modifier ta macro en virant tout le code inutile.
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 10 août 2006 à 10:47
Voici ce que je préparais pendant que 528680 Molenn ecrivait (je ne suis plus aussi rapide qu 'avant)
Mais je tiens a dire que les grand esprits se rencontrent.
Salut,
Je te conseille d'utiliser l'enregistreur de macro fourni avec Excel.
C'est un outil très utile lorsque tu ne sais pas trop comment faire ce que tu souhaite depuis le code.
Il est accessible depuis le menu : Outils => Macros =>
tu peux aussi directement ajouter la barre de menu : Affichage => Barres d'outils => VisualBasic.
Tu lance un enregistrement de macro.
Tu effectues les opérations depuis excel.
Tu arrets l'enregistrement
et tu vas voir ce que Excel à mis dans le module. c'est le code qui permet de faire les actions précédentes.
D'accord le code donné ne parait parfois pas tres optimiser mais cela te donne des points de départ interessant.
@+, Julien
Pensez:
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 10 août 2006 à 11:11
Re,
"Cela ne fonctionne pas...."
Donne le code que tu as mis cela nous eviteras d'essayer de deviner ou ca coinces.
As tu teste l'enregistreur de macro.
@+, Julien
Pensez:
Vous n’avez pas trouvé la réponse que vous recherchez ?
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 10 août 2006 à 11:12
L'objet Range de Worksheet a échoué oui ... mais où, quand, comment ?
Tu parles de ton bout de code que tu as modifié, de mon bout de code ou de celui de jrivet ?
Comme d'hab, donne nous le bout de code qui plante qu'on puisse te dire où se situe le pb.
Molenn
P.S. : Je dirais même plus, jrivet, les grands esprits se télescopent, et ne se font pour autant jamais mal ^^
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 10 août 2006 à 11:32
Salut,
En fait je viens de tester en mettant le bouton (qui lance mon tri de feuil4 ) sur un autre feuille.(Feuil1)
Ce que j'en comprends:
- Si tu ne mets pas ActiveSheet. devant Range, il doit essayer de prendre Range sur la feuille contenant le code ici feuil1.
Il faut donc lui dire a chaque fois dans quelle feuille fait reference l'objet Range.
Si là, ça ne marche pas, c'est que tu as de gros doigts parce que moi ça marche nickel.
Molenn
P.S. : Et comme je l'ai dit dans un autre de tes posts, il faut virer dès que c'est possible la propriété .Select de ton code.
Tout peut être bon, le select plante 1 fois sur 2 je ne sais pourquoi. Pire, il fonctionne, je rajoute un bout de code qui ne touche pas aux ranges, etc ... et ça ne marche plus.
Pas compliqué, un seul mot d'ordre : éradication des Select !
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 10 août 2006 à 11:42
>Molenn:
Moi aussi les codes testés n'avaient aucun problème mais en fait je mettais le code toujours dans la feuille concernée par le tri.
En revanche des que tu mets ce code dans un autre feuille c'est là que les soucis commence. je crois qu il faut tous mâcher a Excel et lui eviter de deviner a quel Cellule on fait reference.
A quand le
ActiveWorkBook.WorkSheets(4).Range(...
Note: je trouve quand meme que l'option ou l'on ecrit tout est beaucoup plus "propre" au niveau du code.
Au moins si quelqu un arrive après il sait tout de suite de quelle cellule(s) ont parle
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 10 août 2006 à 11:51
Salut,
Je ne comprends pas pourquoi cela ne fonctionne pas.
Ca me tracasse , Si tu veux tu peux m'envoyer ton classeur par Mail pour que je puisse inspecter tout ca (si ce classeur n'est pas classé secret défense).
En m'expliquant ce que je doit savoir.
Voici mon adresse: [mailto:epsylon9@gmail.com epsylon9@gmail.com]
Je ne vois que 2 choses :
Worksheets(4) ne correspond pas à la feuille que tu veux trier.
Insère juste en bout de code au début pour tester :
MsgBox Worksheets(4).Name
Est-ce que le nom de la feuille qui ressort est bien celle que tu veux trier ?
Ensuite, la zone de tri : Qu'est-ce qui te ressort comme zone dans le code ?
Teste pour le savoir avec le bout de code suivant
MsgBox Range("A8", Range("A8").End(xlDown)).Address
Est-ce que ça correspond bien à la zone du tableau que tu veux trier ?
Parce que, ce que tu demandes, à savoir le code pour trier dans Excel, tu l'as là. Il n'y en a pas d'autre.
Donc, quand tu dis : mon truc ne marche pas. C'est à dire ? Il y a un message d'erreur, dans ce cas donne le. Il ne se passe rien, dans ce cas, à mon avis, le tri s'est bien effectué, mais dans une autre feuille ! ou alors, tu ne tries que sur une seule case et forcément, ça ne se voit pas. (On t'envoit à la dernière ligne pour définir la zone à trier mais, si tu as une ligne vide avant la fin, genre en 2eme lègne, forcément, ça ne fonctionnera pas.
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 10 août 2006 à 15:33
salut,
Sheets("Nom de ta feuille").Range("A8", Range("A8").End(xlDown)).Sort Key1:=Range("A8"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
il est préférable de travailler avec le nom de la feuille :
1/ c'est plus lisible
2/ lors de la création de feuilles, avec les inversions, il se peut que l'index ne soit pas correspondant avec sa position.
@++
Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"
tortuegenie
Messages postés110Date d'inscriptionlundi 27 mars 2006StatutMembreDernière intervention21 octobre 2008 10 août 2006 à 15:43
Non cela ne marche pas car y'a un pb mais je ne pense pas qu'il est dû à moi mais à Excel et VbA, y'a certains Bug et puis c'est tout.
Je fais mon tri à la main à la place de le faire par prog.
Merci