Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1467 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Faire un tri dans un tableau avec un nombre de colonnes et lignes aléa

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Faire un tri dans un tableau avec un nombre de colonnes et lignes aléa

n°2209281
michele_
Posté le 05-11-2013 à 11:42:18  profilanswer
 

Bonjour,
 
Je cherche à mettre dans ma macro un tri automatique sur mon tableau.
Le hic est que mon tableau a un nombre de colonnes et de lignes aléatoire.
j'ai donc fait ce code :
 

Code :
  1. Dim DernCol As Integer
  2.     DernCol = Cells(4, Cells.Columns.Count).End(xlToLeft).Column
  3.    
  4.     Dim DernLigneAS As Long
  5.     DernLigneAS = Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
  6.    
  7.     Range("A4:" & DernCol & DernLigneAS).Select
  8.     ActiveWorkbook.Worksheets("Atterrissage Stocks" ).Sort.SortFields.Clear
  9.     ActiveWorkbook.Worksheets("Atterrissage Stocks" ).Sort.SortFields.Add Key:= _
  10.         Range("A5:A" & DernLigneAS), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
  11.         xlSortNormal
  12.     ActiveWorkbook.Worksheets("Atterrissage Stocks" ).Sort.SortFields.Add Key:= _
  13.         Range("B5:B" & DernLigneAS), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
  14.         xlSortNormal
  15.     ActiveWorkbook.Worksheets("Atterrissage Stocks" ).Sort.SortFields.Add Key:= _
  16.         Range("C5:C" & DernLigneAS), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
  17.         xlSortNormal
  18.     With ActiveWorkbook.Worksheets("Atterrissage Stocks" ).Sort
  19.         .SetRange Range("A4:" & DernCol & DernLigneAS)
  20.         .Header = xlYes
  21.         .MatchCase = False
  22.         .Orientation = xlTopToBottom
  23.         .SortMethod = xlPinYin
  24.         .Apply
  25.     End With


mais il plante :(
 
Savez vous ce qui cloche ?

mood
Publicité
Posté le 05-11-2013 à 11:42:18  profilanswer
 

n°2209306
Marc L
Posté le 05-11-2013 à 15:29:13  profilanswer
 

 
           Bonjour.

michele_ a écrit :

mais il plante :(


           Super précis, merci !   :sarcastic:  
 
           Pour toute réponse, tout dépend du contenu (du n°) de la ligne déclenchant l'erreur
           et du message lui-même et de son aide, tout est pourtant expliqué dedans …
 

n°2209325
michele_
Posté le 05-11-2013 à 16:45:24  profilanswer
 

dans le code c est sur la ligne 7 qu'il me débug en mettant :
 
Erreur d'exécution '1004':
La méthode 'Range' de l'objet '_Global' a échoué
 
Clairement, je pense que c est ma dimension "DernCol" qui fait tout planter
 
si quelqu'un a la solution merci, sinon, je vais rester sur le bon vieux tableau figé en mettant une colonne et une ligne de fin très très très lointaine ....
 
ps: Sinon, pour info ... quand je fais l aide, il me met strictement rien :(
alors que d'habitude, il y a une aide ... mais là rien

n°2209334
Marc L
Posté le 05-11-2013 à 17:29:54  profilanswer
 

 
           Place un point d'arrêt sur la ligne n°7 (ou écrire Stop en ligne n°6) puis lance la procédure
           puis en positionnant le curseur sur DernLigneAS apparaît sa valeur (ou dans la fenêtre des Variables locales) …
 
           Sinon il ne manquerait pas un A (ou autre lettre de colonne) après A4: en ligne n°7 par hasard ?
 
           J'ai aussi repéré une contradiction dans le code, la feuille est spécifiée un coup elle ne l'est pas;
           tout dépend si la procédure peut être lancée depuis une autre feuille ou pas …

Message cité 1 fois
Message édité par Marc L le 05-11-2013 à 17:32:34
n°2209337
michele_
Posté le 05-11-2013 à 18:09:46  profilanswer
 

Marc L a écrit :

 
           Place un point d'arrêt sur la ligne n°7 (ou écrire Stop en ligne n°6) puis lance la procédure
           puis en positionnant le curseur sur DernLigneAS apparaît sa valeur (ou dans la fenêtre des Variables locales) …


Alors, les valeurs sont les suivantes :
DernCol = 87
DernLigneAS = 19

Marc L a écrit :

 
          Sinon il ne manquerait pas un A (ou autre lettre de colonne) après A4: en ligne n°7 par hasard ?


En fait, je crois que c'est bien ça mon problème :(
C'est "DernCol" qui me donne le numéro de la dernière colonne et non la lettre de la dernière colonne.
Comment peut on faire pour transformer le numéro de colonne en lettre ?

Marc L a écrit :

 
           J'ai aussi repéré une contradiction dans le code, la feuille est spécifiée un coup elle ne l'est pas;
           tout dépend si la procédure peut être lancée depuis une autre feuille ou pas …


C'est seulement la dernière partie de mon code. Et je pointe déjà avant sur la feuille en question (mais j'ai oublié de le rajouter pour vous donner l'exemple)
Mais je t'avouerais que les lignes 8 à 25 du code viennent de l'enregistreur de macros.
J'ai juste modifié en mettant mes dimensions "DernLigneAS" et "DernCol"

n°2209347
Marc L
Posté le 05-11-2013 à 19:45:39  profilanswer
 

 
           Ligne n°7 :   Range("A4", Cells(DernLigneAS, DernCol)).Select
 
           Mais franchement je me demande si cette ligne sert réellement à quelque chose, à part ralentir la procédure (Select) !

Message cité 1 fois
Message édité par Marc L le 05-11-2013 à 20:17:53
n°2209712
michele_
Posté le 08-11-2013 à 11:56:33  profilanswer
 

Marc L a écrit :

 
           Ligne n°7 :   Range("A4", Cells(DernLigneAS, DernCol)).Select
 
           Mais franchement je me demande si cette ligne sert réellement à quelque chose, à part ralentir la procédure (Select) !


 
Merci :)
Je vais essayer ...
Par contre, savoir si cette ligne ralenti la procédure ou non ... je sais vraiment pas puisque je suis partie d'un enregistrement de macro

n°2209743
Marc L
Posté le 08-11-2013 à 14:30:21  profilanswer
 

 
           Pour moi elle ne sert strictement à rien ‼
 
           L'Enregistreur de macros enregistre toute manipulation même les sélections inutiles ! …
           On ne peut le lui reprocher car comment pourrait-il savoir à l'avance ce qui doit être fait ?!  :pt1cable:  
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Faire un tri dans un tableau avec un nombre de colonnes et lignes aléa

 

Sujets relatifs
nommer le contenu d'un nombre de feuilles aléatoire [XL2013][CSS] Cacher / afficher ligne tableau
Comment dupliquer certaines colonnes d'un tableau en javascript? supprission des lignes redondantes dans un fichier
Sélectionner les lignes de la date du jour + Verrouiller emplacementDreamweaver cs 5.5 liens et tableau
Trier des donnees sur deux colonnes ( ID + Version)Tableau php mysql editable et modifiable par sélections et filtres
Greasemonkey, traiter les données d'un tableau 
Plus de sujets relatifs à : Faire un tri dans un tableau avec un nombre de colonnes et lignes aléa


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR