[VB Excel] macro trie avec erreur 1004
Fermé
DunKaNMLNJ
Messages postés
12
Date d'inscription
mardi 21 août 2007
Statut
Membre
Dernière intervention
3 mars 2009
-
25 août 2008 à 15:07
Utilisateur anonyme - 26 août 2008 à 12:58
Utilisateur anonyme - 26 août 2008 à 12:58
A voir également:
- [VB Excel] macro trie avec erreur 1004
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Erreur 0x80070643 - Accueil - Windows
- Excel trier par ordre croissant chiffre - Guide
- Liste déroulante excel - Guide
- Si et excel - Guide
3 réponses
Utilisateur anonyme
25 août 2008 à 19:35
25 août 2008 à 19:35
Bonjour,
À première vue, le tout devrait être fonctionnel !
J'ai remanié de petites choses, je ne travaille jamais avec les [ GOTOs ] ...
Évriter les mots réservés
Déclaré le type de chaque variable
... Dim r , c , r2 As Long
Ici seul r2 est de type Long, r & c sont de type Variant
Quelques initialisations introuvées ???
... f = 0
... Feuille = ActiveSheet.Name
Une erreur 1004 vise une erreur d'adresses :
Worksheets(Feuille).Range(Cells(1, 1), Cells(r, c))
r & c doivent être > 0 - tester en mode pas à pas !
Lupin
À première vue, le tout devrait être fonctionnel !
J'ai remanié de petites choses, je ne travaille jamais avec les [ GOTOs ] ...
Évriter les mots réservés
Déclaré le type de chaque variable
... Dim r , c , r2 As Long
Ici seul r2 est de type Long, r & c sont de type Variant
Quelques initialisations introuvées ???
... f = 0
... Feuille = ActiveSheet.Name
Une erreur 1004 vise une erreur d'adresses :
Worksheets(Feuille).Range(Cells(1, 1), Cells(r, c))
r & c doivent être > 0 - tester en mode pas à pas !
Option Explicit Sub Classement() Dim Feuille As String, f As Integer Dim r As Long, c As Long, r2 As Long 'Dim Classe As Long ' Le mot [ class ] est un mot réservé f = 0 Feuille = ActiveSheet.Name Do Select Case (Feuille) 'permet de passer d'une worksheet à l'autre Case "" Feuille = "Appro" Case "Appro" Feuille = "CA" Case "CA" Feuille = "Comm" Case "Comm" Feuille = "PuetQ" End Select 'pour connaitre le nombre de colonne compte la feuille c = Worksheets(Feuille).Range("A1").End(xlRight).Column 'pour connaitre le nombre de lignes de la feuille r = Worksheets(Feuille).Range("A1").End(xlDown).Row Worksheets(Feuille).Range(Cells(1, 1), Cells(r, c)).Sort _ Key1:=Worksheets(Feuille).Cells(1, c), Order1:=xlDescending, Header:=xlYes, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom 'permet de trier la région "sélectionnée" f = f + 1 Loop While (f < 4) End Sub '
Lupin
DunKaNMLNJ
Messages postés
12
Date d'inscription
mardi 21 août 2007
Statut
Membre
Dernière intervention
3 mars 2009
26 août 2008 à 08:33
26 août 2008 à 08:33
Merci de ton aide,
surtout pour l'astuce permettant de connaître le nombre de colonnes.
Mais attention ça s'écrit comme ça en fait: c = Worksheets(Feuille).Range("A1").End(xlToRight).Column et non End(xlRight)
Par contre j'ai testé le code et ça ne marche toujours pas.
Pour être plus précis, lorsque j'exécute le code, il fonctionne très bien pour la première feuille mais lorsqu'il passe à la feuille suivante l'instruction Sort plante...
Erreur 1004 blablabla
Si je réinitialise et recommence, cette fois le code plante sur la première feuille.
Mystère...
edit: peut etre que SOrt n'aime pas trop l'indexation en L1C1 ?
surtout pour l'astuce permettant de connaître le nombre de colonnes.
Mais attention ça s'écrit comme ça en fait: c = Worksheets(Feuille).Range("A1").End(xlToRight).Column et non End(xlRight)
Par contre j'ai testé le code et ça ne marche toujours pas.
Pour être plus précis, lorsque j'exécute le code, il fonctionne très bien pour la première feuille mais lorsqu'il passe à la feuille suivante l'instruction Sort plante...
Erreur 1004 blablabla
Si je réinitialise et recommence, cette fois le code plante sur la première feuille.
Mystère...
edit: peut etre que SOrt n'aime pas trop l'indexation en L1C1 ?
Utilisateur anonyme
26 août 2008 à 12:58
26 août 2008 à 12:58
re :
tu dis : ... ça fonctionne pour la première feuille
Lupin
tu dis : ... ça fonctionne pour la première feuille
Feuille = ActiveSheet.Name ' Ici , Feuille prend le nom de la feuille active Do Select Case (Feuille) 'permet de passer d'une worksheet à l'autre Case "" Feuille = "Appro" Case "Appro" Feuille = "CA" Case "CA" Feuille = "Comm" Case "Comm" Feuille = "PuetQ" End Select ' Ajoute ici Sheets(Feuille).Select ' pour pointer sur la bonne feuille au moment du [ Sort ] . ...
Lupin