Bonjour,
Essaie comme ceci :
'----------------------------------
Sub test()
Dim DerCol As Integer, DerLig As Long
Dim Sh As Worksheet
For Each Sh In Worksheets
With Sh
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
With .Range("A4", .Cells(DerLig, DerCol))
.Sort Key1:=.Item(2, 2), Order1:=xlAscending, Header:=xlYes
End With
End With
Next
End Sub
'----------------------------------
"Sylian" a écrit dans le message de groupe de discussion :
4bdd8814$0$16563$
Bonjour,
Je possède 13 feuilles sur un classeur avec des tableaux différents.
Je souhaite les trier en ordre alphabétique en prenant la colonne B en
référence (à partir de B4 jusqu'à la fin de ma colonne).
J'ai enregistrer une macro grâce à l'enregistreur (qui fonctionne) mais
quand je l'intègre à ma macro, chaque feuille est bien triée mais ...
seulement les 3 premières colonnes alors que le reste de la ligne lui
correspondant ne suit pas.
Indice : les 3 1eres colonnes ont de commun que se sont des formules
faisant appel à la feuille 1. Mais je bloque quand même.
voici l'extrait de mon code. Peut-être est-ce une faute de ponctuation ?
For j = 13 To 1 Step -1
If j <> 2 Then
ActiveWorkbook.Worksheets(j).Range(Cells(4, 1), Cells(nbpersonnel +
4, 29)).Select
ActiveWorkbook.Worksheets(j).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(j).Sort.SortFields.Add
Key:=Worksheets(j).Range(Cells(4, 2), Cells(nbpersonnel + 4, 2)),
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(j).Sort
.SetRange ActiveWorkbook.Worksheets(j).Range(Cells(3, 1),
Cells(nbpersonnel + 4, 29))
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End If
Next
Merci d'avance de votre aide précieuse.
Bonjour,
Essaie comme ceci :
'----------------------------------
Sub test()
Dim DerCol As Integer, DerLig As Long
Dim Sh As Worksheet
For Each Sh In Worksheets
With Sh
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
With .Range("A4", .Cells(DerLig, DerCol))
.Sort Key1:=.Item(2, 2), Order1:=xlAscending, Header:=xlYes
End With
End With
Next
End Sub
'----------------------------------
"Sylian" <utilisateur@exemple.fr> a écrit dans le message de groupe de discussion :
4bdd8814$0$16563$426a34cc@news.free.fr...
Bonjour,
Je possède 13 feuilles sur un classeur avec des tableaux différents.
Je souhaite les trier en ordre alphabétique en prenant la colonne B en
référence (à partir de B4 jusqu'à la fin de ma colonne).
J'ai enregistrer une macro grâce à l'enregistreur (qui fonctionne) mais
quand je l'intègre à ma macro, chaque feuille est bien triée mais ...
seulement les 3 premières colonnes alors que le reste de la ligne lui
correspondant ne suit pas.
Indice : les 3 1eres colonnes ont de commun que se sont des formules
faisant appel à la feuille 1. Mais je bloque quand même.
voici l'extrait de mon code. Peut-être est-ce une faute de ponctuation ?
For j = 13 To 1 Step -1
If j <> 2 Then
ActiveWorkbook.Worksheets(j).Range(Cells(4, 1), Cells(nbpersonnel +
4, 29)).Select
ActiveWorkbook.Worksheets(j).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(j).Sort.SortFields.Add
Key:=Worksheets(j).Range(Cells(4, 2), Cells(nbpersonnel + 4, 2)),
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(j).Sort
.SetRange ActiveWorkbook.Worksheets(j).Range(Cells(3, 1),
Cells(nbpersonnel + 4, 29))
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End If
Next
Merci d'avance de votre aide précieuse.
Bonjour,
Essaie comme ceci :
'----------------------------------
Sub test()
Dim DerCol As Integer, DerLig As Long
Dim Sh As Worksheet
For Each Sh In Worksheets
With Sh
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
With .Range("A4", .Cells(DerLig, DerCol))
.Sort Key1:=.Item(2, 2), Order1:=xlAscending, Header:=xlYes
End With
End With
Next
End Sub
'----------------------------------
"Sylian" a écrit dans le message de groupe de discussion :
4bdd8814$0$16563$
Bonjour,
Je possède 13 feuilles sur un classeur avec des tableaux différents.
Je souhaite les trier en ordre alphabétique en prenant la colonne B en
référence (à partir de B4 jusqu'à la fin de ma colonne).
J'ai enregistrer une macro grâce à l'enregistreur (qui fonctionne) mais
quand je l'intègre à ma macro, chaque feuille est bien triée mais ...
seulement les 3 premières colonnes alors que le reste de la ligne lui
correspondant ne suit pas.
Indice : les 3 1eres colonnes ont de commun que se sont des formules
faisant appel à la feuille 1. Mais je bloque quand même.
voici l'extrait de mon code. Peut-être est-ce une faute de ponctuation ?
For j = 13 To 1 Step -1
If j <> 2 Then
ActiveWorkbook.Worksheets(j).Range(Cells(4, 1), Cells(nbpersonnel +
4, 29)).Select
ActiveWorkbook.Worksheets(j).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(j).Sort.SortFields.Add
Key:=Worksheets(j).Range(Cells(4, 2), Cells(nbpersonnel + 4, 2)),
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(j).Sort
.SetRange ActiveWorkbook.Worksheets(j).Range(Cells(3, 1),
Cells(nbpersonnel + 4, 29))
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End If
Next
Merci d'avance de votre aide précieuse.
Bonjour,
Essaie comme ceci :
'----------------------------------
Sub test()
Dim DerCol As Integer, DerLig As Long
Dim Sh As Worksheet
For Each Sh In Worksheets
With Sh
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
With .Range("A4", .Cells(DerLig, DerCol))
.Sort Key1:=.Item(2, 2), Order1:=xlAscending, Header:=xlYes
End With
End With
Next
End Sub
'----------------------------------
"Sylian" a écrit dans le message de groupe de discussion :
4bdd8814$0$16563$
Bonjour,
Je possède 13 feuilles sur un classeur avec des tableaux différents.
Je souhaite les trier en ordre alphabétique en prenant la colonne B en
référence (à partir de B4 jusqu'à la fin de ma colonne).
J'ai enregistrer une macro grâce à l'enregistreur (qui fonctionne) mais
quand je l'intègre à ma macro, chaque feuille est bien triée mais ...
seulement les 3 premières colonnes alors que le reste de la ligne lui
correspondant ne suit pas.
Indice : les 3 1eres colonnes ont de commun que se sont des formules
faisant appel à la feuille 1. Mais je bloque quand même.
voici l'extrait de mon code. Peut-être est-ce une faute de ponctuation ?
For j = 13 To 1 Step -1
If j <> 2 Then
ActiveWorkbook.Worksheets(j).Range(Cells(4, 1), Cells(nbpersonnel +
4, 29)).Select
ActiveWorkbook.Worksheets(j).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(j).Sort.SortFields.Add
Key:=Worksheets(j).Range(Cells(4, 2), Cells(nbpersonnel + 4, 2)),
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(j).Sort
.SetRange ActiveWorkbook.Worksheets(j).Range(Cells(3, 1),
Cells(nbpersonnel + 4, 29))
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End If
Next
Merci d'avance de votre aide précieuse.
Bonjour,
Essaie comme ceci :
'----------------------------------
Sub test()
Dim DerCol As Integer, DerLig As Long
Dim Sh As Worksheet
For Each Sh In Worksheets
With Sh
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
With .Range("A4", .Cells(DerLig, DerCol))
.Sort Key1:=.Item(2, 2), Order1:=xlAscending, Header:=xlYes
End With
End With
Next
End Sub
'----------------------------------
"Sylian" <utilisateur@exemple.fr> a écrit dans le message de groupe de discussion :
4bdd8814$0$16563$426a34cc@news.free.fr...
Bonjour,
Je possède 13 feuilles sur un classeur avec des tableaux différents.
Je souhaite les trier en ordre alphabétique en prenant la colonne B en
référence (à partir de B4 jusqu'à la fin de ma colonne).
J'ai enregistrer une macro grâce à l'enregistreur (qui fonctionne) mais
quand je l'intègre à ma macro, chaque feuille est bien triée mais ...
seulement les 3 premières colonnes alors que le reste de la ligne lui
correspondant ne suit pas.
Indice : les 3 1eres colonnes ont de commun que se sont des formules
faisant appel à la feuille 1. Mais je bloque quand même.
voici l'extrait de mon code. Peut-être est-ce une faute de ponctuation ?
For j = 13 To 1 Step -1
If j <> 2 Then
ActiveWorkbook.Worksheets(j).Range(Cells(4, 1), Cells(nbpersonnel +
4, 29)).Select
ActiveWorkbook.Worksheets(j).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(j).Sort.SortFields.Add
Key:=Worksheets(j).Range(Cells(4, 2), Cells(nbpersonnel + 4, 2)),
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(j).Sort
.SetRange ActiveWorkbook.Worksheets(j).Range(Cells(3, 1),
Cells(nbpersonnel + 4, 29))
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End If
Next
Merci d'avance de votre aide précieuse.
Bonjour,
Essaie comme ceci :
'----------------------------------
Sub test()
Dim DerCol As Integer, DerLig As Long
Dim Sh As Worksheet
For Each Sh In Worksheets
With Sh
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
With .Range("A4", .Cells(DerLig, DerCol))
.Sort Key1:=.Item(2, 2), Order1:=xlAscending, Header:=xlYes
End With
End With
Next
End Sub
'----------------------------------
"Sylian" a écrit dans le message de groupe de discussion :
4bdd8814$0$16563$
Bonjour,
Je possède 13 feuilles sur un classeur avec des tableaux différents.
Je souhaite les trier en ordre alphabétique en prenant la colonne B en
référence (à partir de B4 jusqu'à la fin de ma colonne).
J'ai enregistrer une macro grâce à l'enregistreur (qui fonctionne) mais
quand je l'intègre à ma macro, chaque feuille est bien triée mais ...
seulement les 3 premières colonnes alors que le reste de la ligne lui
correspondant ne suit pas.
Indice : les 3 1eres colonnes ont de commun que se sont des formules
faisant appel à la feuille 1. Mais je bloque quand même.
voici l'extrait de mon code. Peut-être est-ce une faute de ponctuation ?
For j = 13 To 1 Step -1
If j <> 2 Then
ActiveWorkbook.Worksheets(j).Range(Cells(4, 1), Cells(nbpersonnel +
4, 29)).Select
ActiveWorkbook.Worksheets(j).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(j).Sort.SortFields.Add
Key:=Worksheets(j).Range(Cells(4, 2), Cells(nbpersonnel + 4, 2)),
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(j).Sort
.SetRange ActiveWorkbook.Worksheets(j).Range(Cells(3, 1),
Cells(nbpersonnel + 4, 29))
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End If
Next
Merci d'avance de votre aide précieuse.
Je t'ai conçu une macro. L'as-tu essayée? Fonctionne-t-elle ?
Sinon qu'est-ce que la procédure proposée ne réussit pas
à faire ?
Si tu rencontres d'autres difficultés avec ton application,
tu peux les décrire... Pour des raisons de compréhension
prenons-les une à la fois. Pour ce faire, tu dois les décrire
séparément et te rappeler que les répondeurs n'ont pas ton
application sous les yeux. Cela demande d'être très explicite.
"Sylian" a écrit dans le message de groupe de discussion :
4bddbca3$0$12194$
Merci beaucoup pour ton aide dominicale !
Cependant si le trie fonctionne, j'ai exactement le même problème.
En fait peut-être est-ce que cela vient du fait que je créé un nom en
colonne B de la feuille (1) et que pour toutes les feuilles suivante
j'ai mis þuil1!A(numéro de la ligne correspondante) ?
Je bloque encore
michdenis a écrit :Bonjour,
Essaie comme ceci :
'----------------------------------
Sub test()
Dim DerCol As Integer, DerLig As Long
Dim Sh As Worksheet
For Each Sh In Worksheets
With Sh
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
With .Range("A4", .Cells(DerLig, DerCol))
.Sort Key1:=.Item(2, 2), Order1:=xlAscending, Header:=xlYes
End With
End With
Next
End Sub
'----------------------------------
"Sylian" a écrit dans le message de groupe de discussion :
4bdd8814$0$16563$
Bonjour,
Je possède 13 feuilles sur un classeur avec des tableaux différents.
Je souhaite les trier en ordre alphabétique en prenant la colonne B en
référence (à partir de B4 jusqu'à la fin de ma colonne).
J'ai enregistrer une macro grâce à l'enregistreur (qui fonctionne) mais
quand je l'intègre à ma macro, chaque feuille est bien triée mais ...
seulement les 3 premières colonnes alors que le reste de la ligne lui
correspondant ne suit pas.
Indice : les 3 1eres colonnes ont de commun que se sont des formules
faisant appel à la feuille 1. Mais je bloque quand même.
voici l'extrait de mon code. Peut-être est-ce une faute de ponctuation ?
For j = 13 To 1 Step -1
If j <> 2 Then
ActiveWorkbook.Worksheets(j).Range(Cells(4, 1), Cells(nbpersonnel +
4, 29)).Select
ActiveWorkbook.Worksheets(j).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(j).Sort.SortFields.Add
Key:=Worksheets(j).Range(Cells(4, 2), Cells(nbpersonnel + 4, 2)),
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(j).Sort
.SetRange ActiveWorkbook.Worksheets(j).Range(Cells(3, 1),
Cells(nbpersonnel + 4, 29))
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End If
Next
Merci d'avance de votre aide précieuse.
Je t'ai conçu une macro. L'as-tu essayée? Fonctionne-t-elle ?
Sinon qu'est-ce que la procédure proposée ne réussit pas
à faire ?
Si tu rencontres d'autres difficultés avec ton application,
tu peux les décrire... Pour des raisons de compréhension
prenons-les une à la fois. Pour ce faire, tu dois les décrire
séparément et te rappeler que les répondeurs n'ont pas ton
application sous les yeux. Cela demande d'être très explicite.
"Sylian" <utilisateur@exemple.fr> a écrit dans le message de groupe de discussion :
4bddbca3$0$12194$426a34cc@news.free.fr...
Merci beaucoup pour ton aide dominicale !
Cependant si le trie fonctionne, j'ai exactement le même problème.
En fait peut-être est-ce que cela vient du fait que je créé un nom en
colonne B de la feuille (1) et que pour toutes les feuilles suivante
j'ai mis þuil1!A(numéro de la ligne correspondante) ?
Je bloque encore
michdenis a écrit :
Bonjour,
Essaie comme ceci :
'----------------------------------
Sub test()
Dim DerCol As Integer, DerLig As Long
Dim Sh As Worksheet
For Each Sh In Worksheets
With Sh
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
With .Range("A4", .Cells(DerLig, DerCol))
.Sort Key1:=.Item(2, 2), Order1:=xlAscending, Header:=xlYes
End With
End With
Next
End Sub
'----------------------------------
"Sylian" <utilisateur@exemple.fr> a écrit dans le message de groupe de discussion :
4bdd8814$0$16563$426a34cc@news.free.fr...
Bonjour,
Je possède 13 feuilles sur un classeur avec des tableaux différents.
Je souhaite les trier en ordre alphabétique en prenant la colonne B en
référence (à partir de B4 jusqu'à la fin de ma colonne).
J'ai enregistrer une macro grâce à l'enregistreur (qui fonctionne) mais
quand je l'intègre à ma macro, chaque feuille est bien triée mais ...
seulement les 3 premières colonnes alors que le reste de la ligne lui
correspondant ne suit pas.
Indice : les 3 1eres colonnes ont de commun que se sont des formules
faisant appel à la feuille 1. Mais je bloque quand même.
voici l'extrait de mon code. Peut-être est-ce une faute de ponctuation ?
For j = 13 To 1 Step -1
If j <> 2 Then
ActiveWorkbook.Worksheets(j).Range(Cells(4, 1), Cells(nbpersonnel +
4, 29)).Select
ActiveWorkbook.Worksheets(j).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(j).Sort.SortFields.Add
Key:=Worksheets(j).Range(Cells(4, 2), Cells(nbpersonnel + 4, 2)),
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(j).Sort
.SetRange ActiveWorkbook.Worksheets(j).Range(Cells(3, 1),
Cells(nbpersonnel + 4, 29))
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End If
Next
Merci d'avance de votre aide précieuse.
Je t'ai conçu une macro. L'as-tu essayée? Fonctionne-t-elle ?
Sinon qu'est-ce que la procédure proposée ne réussit pas
à faire ?
Si tu rencontres d'autres difficultés avec ton application,
tu peux les décrire... Pour des raisons de compréhension
prenons-les une à la fois. Pour ce faire, tu dois les décrire
séparément et te rappeler que les répondeurs n'ont pas ton
application sous les yeux. Cela demande d'être très explicite.
"Sylian" a écrit dans le message de groupe de discussion :
4bddbca3$0$12194$
Merci beaucoup pour ton aide dominicale !
Cependant si le trie fonctionne, j'ai exactement le même problème.
En fait peut-être est-ce que cela vient du fait que je créé un nom en
colonne B de la feuille (1) et que pour toutes les feuilles suivante
j'ai mis þuil1!A(numéro de la ligne correspondante) ?
Je bloque encore
michdenis a écrit :Bonjour,
Essaie comme ceci :
'----------------------------------
Sub test()
Dim DerCol As Integer, DerLig As Long
Dim Sh As Worksheet
For Each Sh In Worksheets
With Sh
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
With .Range("A4", .Cells(DerLig, DerCol))
.Sort Key1:=.Item(2, 2), Order1:=xlAscending, Header:=xlYes
End With
End With
Next
End Sub
'----------------------------------
"Sylian" a écrit dans le message de groupe de discussion :
4bdd8814$0$16563$
Bonjour,
Je possède 13 feuilles sur un classeur avec des tableaux différents.
Je souhaite les trier en ordre alphabétique en prenant la colonne B en
référence (à partir de B4 jusqu'à la fin de ma colonne).
J'ai enregistrer une macro grâce à l'enregistreur (qui fonctionne) mais
quand je l'intègre à ma macro, chaque feuille est bien triée mais ...
seulement les 3 premières colonnes alors que le reste de la ligne lui
correspondant ne suit pas.
Indice : les 3 1eres colonnes ont de commun que se sont des formules
faisant appel à la feuille 1. Mais je bloque quand même.
voici l'extrait de mon code. Peut-être est-ce une faute de ponctuation ?
For j = 13 To 1 Step -1
If j <> 2 Then
ActiveWorkbook.Worksheets(j).Range(Cells(4, 1), Cells(nbpersonnel +
4, 29)).Select
ActiveWorkbook.Worksheets(j).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(j).Sort.SortFields.Add
Key:=Worksheets(j).Range(Cells(4, 2), Cells(nbpersonnel + 4, 2)),
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(j).Sort
.SetRange ActiveWorkbook.Worksheets(j).Range(Cells(3, 1),
Cells(nbpersonnel + 4, 29))
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End If
Next
Merci d'avance de votre aide précieuse.
Excuse moi pour ces "imprécisions" et merci encore pour ton aide. Je vais
essayer de décrire un peu mieux mon projet.
Déjà, j'ai bien essayé ta macros qui bien que deux fois plus petite que la
mienne, arrive au même résultat ; un trie sur les 3 première colonnes sans
que le reste des lignes leur correspondant ne suivent.
Voici globalement mon projet. J'ai une feuille, la première, avec des
colonnes de référence A pour le prénom, B pour le nom, C pour l'age. Les
autres feuilles du classeur reprennent à chaque fois ces références dans
les mêmes colonnes. Pour la feuille 2 dans la cellule B4 est inscrit
þuill1!B4 idem pour la feuille 3 etc... Le reste des tableau à droite de
ces 3 colonnes est libre pour rentrer des données à la main.
J'ai créé un macro de gestion de personne en feuille 1 avec la possibilité
de supprimer ou d'ajouter un prénom+nom+age. La suppression avec liste
déroulante fonctionne très bien. L'insertion fonctrionne si je rajoute une
personne à la fin de tableau mais au moment de trier, c'est la catastrophe
! Dans les feuilles de 2 à 13, seules les 3 première colonnes sont triés
(en référence à la première). J'aurai aimé avoir le reste de la ligne
(hormis A B C) vierge et inséré à la bonne position d'après un trie
alphabétique se référant au nom (B)
J'espère avoir été plus clair. C'est très simple à voir mais difficile à
décrire. A la rigueur je peux extrapoler un exemple simple et l'envoyer
via ci-joint pour une meilleur compréhension ... si tu veux :-/
Merci d'avance
michdenis a écrit :Je t'ai conçu une macro. L'as-tu essayée? Fonctionne-t-elle ?
Sinon qu'est-ce que la procédure proposée ne réussit pas
à faire ?
Si tu rencontres d'autres difficultés avec ton application,
tu peux les décrire... Pour des raisons de compréhension
prenons-les une à la fois. Pour ce faire, tu dois les décrire
séparément et te rappeler que les répondeurs n'ont pas ton
application sous les yeux. Cela demande d'être très explicite.
"Sylian" a écrit dans le message de groupe de
discussion : 4bddbca3$0$12194$
Merci beaucoup pour ton aide dominicale !
Cependant si le trie fonctionne, j'ai exactement le même problème.
En fait peut-être est-ce que cela vient du fait que je créé un nom en
colonne B de la feuille (1) et que pour toutes les feuilles suivante
j'ai mis þuil1!A(numéro de la ligne correspondante) ?
Je bloque encore
michdenis a écrit :Bonjour,
Essaie comme ceci :
'----------------------------------
Sub test()
Dim DerCol As Integer, DerLig As Long
Dim Sh As Worksheet
For Each Sh In Worksheets
With Sh
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
With .Range("A4", .Cells(DerLig, DerCol))
.Sort Key1:=.Item(2, 2), Order1:=xlAscending, Header:=xlYes
End With
End With
Next
End Sub
'----------------------------------
"Sylian" a écrit dans le message de groupe de
discussion :
4bdd8814$0$16563$
Bonjour,
Je possède 13 feuilles sur un classeur avec des tableaux différents.
Je souhaite les trier en ordre alphabétique en prenant la colonne B en
référence (à partir de B4 jusqu'à la fin de ma colonne).
J'ai enregistrer une macro grâce à l'enregistreur (qui fonctionne) mais
quand je l'intègre à ma macro, chaque feuille est bien triée mais ...
seulement les 3 premières colonnes alors que le reste de la ligne lui
correspondant ne suit pas.
Indice : les 3 1eres colonnes ont de commun que se sont des formules
faisant appel à la feuille 1. Mais je bloque quand même.
voici l'extrait de mon code. Peut-être est-ce une faute de ponctuation ?
For j = 13 To 1 Step -1
If j <> 2 Then
ActiveWorkbook.Worksheets(j).Range(Cells(4, 1), Cells(nbpersonnel +
4, 29)).Select
ActiveWorkbook.Worksheets(j).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(j).Sort.SortFields.Add
Key:=Worksheets(j).Range(Cells(4, 2), Cells(nbpersonnel + 4, 2)),
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(j).Sort
.SetRange ActiveWorkbook.Worksheets(j).Range(Cells(3, 1),
Cells(nbpersonnel + 4, 29))
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End If
Next
Merci d'avance de votre aide précieuse.
Excuse moi pour ces "imprécisions" et merci encore pour ton aide. Je vais
essayer de décrire un peu mieux mon projet.
Déjà, j'ai bien essayé ta macros qui bien que deux fois plus petite que la
mienne, arrive au même résultat ; un trie sur les 3 première colonnes sans
que le reste des lignes leur correspondant ne suivent.
Voici globalement mon projet. J'ai une feuille, la première, avec des
colonnes de référence A pour le prénom, B pour le nom, C pour l'age. Les
autres feuilles du classeur reprennent à chaque fois ces références dans
les mêmes colonnes. Pour la feuille 2 dans la cellule B4 est inscrit
þuill1!B4 idem pour la feuille 3 etc... Le reste des tableau à droite de
ces 3 colonnes est libre pour rentrer des données à la main.
J'ai créé un macro de gestion de personne en feuille 1 avec la possibilité
de supprimer ou d'ajouter un prénom+nom+age. La suppression avec liste
déroulante fonctionne très bien. L'insertion fonctrionne si je rajoute une
personne à la fin de tableau mais au moment de trier, c'est la catastrophe
! Dans les feuilles de 2 à 13, seules les 3 première colonnes sont triés
(en référence à la première). J'aurai aimé avoir le reste de la ligne
(hormis A B C) vierge et inséré à la bonne position d'après un trie
alphabétique se référant au nom (B)
J'espère avoir été plus clair. C'est très simple à voir mais difficile à
décrire. A la rigueur je peux extrapoler un exemple simple et l'envoyer
via ci-joint pour une meilleur compréhension ... si tu veux :-/
Merci d'avance
michdenis a écrit :
Je t'ai conçu une macro. L'as-tu essayée? Fonctionne-t-elle ?
Sinon qu'est-ce que la procédure proposée ne réussit pas
à faire ?
Si tu rencontres d'autres difficultés avec ton application,
tu peux les décrire... Pour des raisons de compréhension
prenons-les une à la fois. Pour ce faire, tu dois les décrire
séparément et te rappeler que les répondeurs n'ont pas ton
application sous les yeux. Cela demande d'être très explicite.
"Sylian" <utilisateur@exemple.fr> a écrit dans le message de groupe de
discussion : 4bddbca3$0$12194$426a34cc@news.free.fr...
Merci beaucoup pour ton aide dominicale !
Cependant si le trie fonctionne, j'ai exactement le même problème.
En fait peut-être est-ce que cela vient du fait que je créé un nom en
colonne B de la feuille (1) et que pour toutes les feuilles suivante
j'ai mis þuil1!A(numéro de la ligne correspondante) ?
Je bloque encore
michdenis a écrit :
Bonjour,
Essaie comme ceci :
'----------------------------------
Sub test()
Dim DerCol As Integer, DerLig As Long
Dim Sh As Worksheet
For Each Sh In Worksheets
With Sh
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
With .Range("A4", .Cells(DerLig, DerCol))
.Sort Key1:=.Item(2, 2), Order1:=xlAscending, Header:=xlYes
End With
End With
Next
End Sub
'----------------------------------
"Sylian" <utilisateur@exemple.fr> a écrit dans le message de groupe de
discussion :
4bdd8814$0$16563$426a34cc@news.free.fr...
Bonjour,
Je possède 13 feuilles sur un classeur avec des tableaux différents.
Je souhaite les trier en ordre alphabétique en prenant la colonne B en
référence (à partir de B4 jusqu'à la fin de ma colonne).
J'ai enregistrer une macro grâce à l'enregistreur (qui fonctionne) mais
quand je l'intègre à ma macro, chaque feuille est bien triée mais ...
seulement les 3 premières colonnes alors que le reste de la ligne lui
correspondant ne suit pas.
Indice : les 3 1eres colonnes ont de commun que se sont des formules
faisant appel à la feuille 1. Mais je bloque quand même.
voici l'extrait de mon code. Peut-être est-ce une faute de ponctuation ?
For j = 13 To 1 Step -1
If j <> 2 Then
ActiveWorkbook.Worksheets(j).Range(Cells(4, 1), Cells(nbpersonnel +
4, 29)).Select
ActiveWorkbook.Worksheets(j).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(j).Sort.SortFields.Add
Key:=Worksheets(j).Range(Cells(4, 2), Cells(nbpersonnel + 4, 2)),
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(j).Sort
.SetRange ActiveWorkbook.Worksheets(j).Range(Cells(3, 1),
Cells(nbpersonnel + 4, 29))
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End If
Next
Merci d'avance de votre aide précieuse.
Excuse moi pour ces "imprécisions" et merci encore pour ton aide. Je vais
essayer de décrire un peu mieux mon projet.
Déjà, j'ai bien essayé ta macros qui bien que deux fois plus petite que la
mienne, arrive au même résultat ; un trie sur les 3 première colonnes sans
que le reste des lignes leur correspondant ne suivent.
Voici globalement mon projet. J'ai une feuille, la première, avec des
colonnes de référence A pour le prénom, B pour le nom, C pour l'age. Les
autres feuilles du classeur reprennent à chaque fois ces références dans
les mêmes colonnes. Pour la feuille 2 dans la cellule B4 est inscrit
þuill1!B4 idem pour la feuille 3 etc... Le reste des tableau à droite de
ces 3 colonnes est libre pour rentrer des données à la main.
J'ai créé un macro de gestion de personne en feuille 1 avec la possibilité
de supprimer ou d'ajouter un prénom+nom+age. La suppression avec liste
déroulante fonctionne très bien. L'insertion fonctrionne si je rajoute une
personne à la fin de tableau mais au moment de trier, c'est la catastrophe
! Dans les feuilles de 2 à 13, seules les 3 première colonnes sont triés
(en référence à la première). J'aurai aimé avoir le reste de la ligne
(hormis A B C) vierge et inséré à la bonne position d'après un trie
alphabétique se référant au nom (B)
J'espère avoir été plus clair. C'est très simple à voir mais difficile à
décrire. A la rigueur je peux extrapoler un exemple simple et l'envoyer
via ci-joint pour une meilleur compréhension ... si tu veux :-/
Merci d'avance
michdenis a écrit :Je t'ai conçu une macro. L'as-tu essayée? Fonctionne-t-elle ?
Sinon qu'est-ce que la procédure proposée ne réussit pas
à faire ?
Si tu rencontres d'autres difficultés avec ton application,
tu peux les décrire... Pour des raisons de compréhension
prenons-les une à la fois. Pour ce faire, tu dois les décrire
séparément et te rappeler que les répondeurs n'ont pas ton
application sous les yeux. Cela demande d'être très explicite.
"Sylian" a écrit dans le message de groupe de
discussion : 4bddbca3$0$12194$
Merci beaucoup pour ton aide dominicale !
Cependant si le trie fonctionne, j'ai exactement le même problème.
En fait peut-être est-ce que cela vient du fait que je créé un nom en
colonne B de la feuille (1) et que pour toutes les feuilles suivante
j'ai mis þuil1!A(numéro de la ligne correspondante) ?
Je bloque encore
michdenis a écrit :Bonjour,
Essaie comme ceci :
'----------------------------------
Sub test()
Dim DerCol As Integer, DerLig As Long
Dim Sh As Worksheet
For Each Sh In Worksheets
With Sh
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
With .Range("A4", .Cells(DerLig, DerCol))
.Sort Key1:=.Item(2, 2), Order1:=xlAscending, Header:=xlYes
End With
End With
Next
End Sub
'----------------------------------
"Sylian" a écrit dans le message de groupe de
discussion :
4bdd8814$0$16563$
Bonjour,
Je possède 13 feuilles sur un classeur avec des tableaux différents.
Je souhaite les trier en ordre alphabétique en prenant la colonne B en
référence (à partir de B4 jusqu'à la fin de ma colonne).
J'ai enregistrer une macro grâce à l'enregistreur (qui fonctionne) mais
quand je l'intègre à ma macro, chaque feuille est bien triée mais ...
seulement les 3 premières colonnes alors que le reste de la ligne lui
correspondant ne suit pas.
Indice : les 3 1eres colonnes ont de commun que se sont des formules
faisant appel à la feuille 1. Mais je bloque quand même.
voici l'extrait de mon code. Peut-être est-ce une faute de ponctuation ?
For j = 13 To 1 Step -1
If j <> 2 Then
ActiveWorkbook.Worksheets(j).Range(Cells(4, 1), Cells(nbpersonnel +
4, 29)).Select
ActiveWorkbook.Worksheets(j).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(j).Sort.SortFields.Add
Key:=Worksheets(j).Range(Cells(4, 2), Cells(nbpersonnel + 4, 2)),
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(j).Sort
.SetRange ActiveWorkbook.Worksheets(j).Range(Cells(3, 1),
Cells(nbpersonnel + 4, 29))
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End If
Next
Merci d'avance de votre aide précieuse.
Tu dois passer en mode de calcul manuel le temps que
la procédure va exécuter le tri. J'ai ajouté 2 lignes de
code à cet égard à la procédure :
Avant :
Application.Calculation = xlCalculationManual
Après :
Application.Calculation = xlCalculationAutomatic
'----------------------------------
Sub test()
Dim DerCol As Integer, DerLig As Long
Dim Sh As Worksheet
Application.Calculation = xlCalculationManual
For Each Sh In Worksheets
With Sh
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
With .Range("A4", .Cells(DerLig, DerCol))
.Sort Key1:=.Item(2, 2), Order1:=xlAscending, Header:=xlYes
End With
End With
Next
Application.Calculation = xlCalculationAutomatic
End Sub
'----------------------------------
"Sylian" a écrit dans le message de news:
4bde750c$0$16944$Excuse moi pour ces "imprécisions" et merci encore pour ton aide. Je vais
essayer de décrire un peu mieux mon projet.
Déjà, j'ai bien essayé ta macros qui bien que deux fois plus petite que la
mienne, arrive au même résultat ; un trie sur les 3 première colonnes sans
que le reste des lignes leur correspondant ne suivent.
Voici globalement mon projet. J'ai une feuille, la première, avec des
colonnes de référence A pour le prénom, B pour le nom, C pour l'age. Les
autres feuilles du classeur reprennent à chaque fois ces références dans
les mêmes colonnes. Pour la feuille 2 dans la cellule B4 est inscrit
þuill1!B4 idem pour la feuille 3 etc... Le reste des tableau à droite de
ces 3 colonnes est libre pour rentrer des données à la main.
J'ai créé un macro de gestion de personne en feuille 1 avec la possibilité
de supprimer ou d'ajouter un prénom+nom+age. La suppression avec liste
déroulante fonctionne très bien. L'insertion fonctrionne si je rajoute une
personne à la fin de tableau mais au moment de trier, c'est la catastrophe
! Dans les feuilles de 2 à 13, seules les 3 première colonnes sont triés
(en référence à la première). J'aurai aimé avoir le reste de la ligne
(hormis A B C) vierge et inséré à la bonne position d'après un trie
alphabétique se référant au nom (B)
J'espère avoir été plus clair. C'est très simple à voir mais difficile à
décrire. A la rigueur je peux extrapoler un exemple simple et l'envoyer via
ci-joint pour une meilleur compréhension ... si tu veux :-/
Merci d'avance
michdenis a écrit :Je t'ai conçu une macro. L'as-tu essayée? Fonctionne-t-elle ?
Sinon qu'est-ce que la procédure proposée ne réussit pas
à faire ?
Si tu rencontres d'autres difficultés avec ton application,
tu peux les décrire... Pour des raisons de compréhension
prenons-les une à la fois. Pour ce faire, tu dois les décrire
séparément et te rappeler que les répondeurs n'ont pas ton
application sous les yeux. Cela demande d'être très explicite.
"Sylian" a écrit dans le message de groupe de
discussion : 4bddbca3$0$12194$
Merci beaucoup pour ton aide dominicale !
Cependant si le trie fonctionne, j'ai exactement le même problème.
En fait peut-être est-ce que cela vient du fait que je créé un nom en
colonne B de la feuille (1) et que pour toutes les feuilles suivante
j'ai mis þuil1!A(numéro de la ligne correspondante) ?
Je bloque encore
michdenis a écrit :Bonjour,
Essaie comme ceci :
'----------------------------------
Sub test()
Dim DerCol As Integer, DerLig As Long
Dim Sh As Worksheet
For Each Sh In Worksheets
With Sh
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
With .Range("A4", .Cells(DerLig, DerCol))
.Sort Key1:=.Item(2, 2), Order1:=xlAscending, Header:=xlYes
End With
End With
Next
End Sub
'----------------------------------
"Sylian" a écrit dans le message de groupe de
discussion :
4bdd8814$0$16563$
Bonjour,
Je possède 13 feuilles sur un classeur avec des tableaux différents.
Je souhaite les trier en ordre alphabétique en prenant la colonne B en
référence (à partir de B4 jusqu'à la fin de ma colonne).
J'ai enregistrer une macro grâce à l'enregistreur (qui fonctionne) mais
quand je l'intègre à ma macro, chaque feuille est bien triée mais ...
seulement les 3 premières colonnes alors que le reste de la ligne lui
correspondant ne suit pas.
Indice : les 3 1eres colonnes ont de commun que se sont des formules
faisant appel à la feuille 1. Mais je bloque quand même.
voici l'extrait de mon code. Peut-être est-ce une faute de ponctuation ?
For j = 13 To 1 Step -1
If j <> 2 Then
ActiveWorkbook.Worksheets(j).Range(Cells(4, 1), Cells(nbpersonnel +
4, 29)).Select
ActiveWorkbook.Worksheets(j).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(j).Sort.SortFields.Add
Key:=Worksheets(j).Range(Cells(4, 2), Cells(nbpersonnel + 4, 2)),
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(j).Sort
.SetRange ActiveWorkbook.Worksheets(j).Range(Cells(3, 1),
Cells(nbpersonnel + 4, 29))
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End If
Next
Merci d'avance de votre aide précieuse.
Tu dois passer en mode de calcul manuel le temps que
la procédure va exécuter le tri. J'ai ajouté 2 lignes de
code à cet égard à la procédure :
Avant :
Application.Calculation = xlCalculationManual
Après :
Application.Calculation = xlCalculationAutomatic
'----------------------------------
Sub test()
Dim DerCol As Integer, DerLig As Long
Dim Sh As Worksheet
Application.Calculation = xlCalculationManual
For Each Sh In Worksheets
With Sh
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
With .Range("A4", .Cells(DerLig, DerCol))
.Sort Key1:=.Item(2, 2), Order1:=xlAscending, Header:=xlYes
End With
End With
Next
Application.Calculation = xlCalculationAutomatic
End Sub
'----------------------------------
"Sylian" <utilisateur@exemple.fr> a écrit dans le message de news:
4bde750c$0$16944$426a74cc@news.free.fr...
Excuse moi pour ces "imprécisions" et merci encore pour ton aide. Je vais
essayer de décrire un peu mieux mon projet.
Déjà, j'ai bien essayé ta macros qui bien que deux fois plus petite que la
mienne, arrive au même résultat ; un trie sur les 3 première colonnes sans
que le reste des lignes leur correspondant ne suivent.
Voici globalement mon projet. J'ai une feuille, la première, avec des
colonnes de référence A pour le prénom, B pour le nom, C pour l'age. Les
autres feuilles du classeur reprennent à chaque fois ces références dans
les mêmes colonnes. Pour la feuille 2 dans la cellule B4 est inscrit
þuill1!B4 idem pour la feuille 3 etc... Le reste des tableau à droite de
ces 3 colonnes est libre pour rentrer des données à la main.
J'ai créé un macro de gestion de personne en feuille 1 avec la possibilité
de supprimer ou d'ajouter un prénom+nom+age. La suppression avec liste
déroulante fonctionne très bien. L'insertion fonctrionne si je rajoute une
personne à la fin de tableau mais au moment de trier, c'est la catastrophe
! Dans les feuilles de 2 à 13, seules les 3 première colonnes sont triés
(en référence à la première). J'aurai aimé avoir le reste de la ligne
(hormis A B C) vierge et inséré à la bonne position d'après un trie
alphabétique se référant au nom (B)
J'espère avoir été plus clair. C'est très simple à voir mais difficile à
décrire. A la rigueur je peux extrapoler un exemple simple et l'envoyer via
ci-joint pour une meilleur compréhension ... si tu veux :-/
Merci d'avance
michdenis a écrit :
Je t'ai conçu une macro. L'as-tu essayée? Fonctionne-t-elle ?
Sinon qu'est-ce que la procédure proposée ne réussit pas
à faire ?
Si tu rencontres d'autres difficultés avec ton application,
tu peux les décrire... Pour des raisons de compréhension
prenons-les une à la fois. Pour ce faire, tu dois les décrire
séparément et te rappeler que les répondeurs n'ont pas ton
application sous les yeux. Cela demande d'être très explicite.
"Sylian" <utilisateur@exemple.fr> a écrit dans le message de groupe de
discussion : 4bddbca3$0$12194$426a34cc@news.free.fr...
Merci beaucoup pour ton aide dominicale !
Cependant si le trie fonctionne, j'ai exactement le même problème.
En fait peut-être est-ce que cela vient du fait que je créé un nom en
colonne B de la feuille (1) et que pour toutes les feuilles suivante
j'ai mis þuil1!A(numéro de la ligne correspondante) ?
Je bloque encore
michdenis a écrit :
Bonjour,
Essaie comme ceci :
'----------------------------------
Sub test()
Dim DerCol As Integer, DerLig As Long
Dim Sh As Worksheet
For Each Sh In Worksheets
With Sh
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
With .Range("A4", .Cells(DerLig, DerCol))
.Sort Key1:=.Item(2, 2), Order1:=xlAscending, Header:=xlYes
End With
End With
Next
End Sub
'----------------------------------
"Sylian" <utilisateur@exemple.fr> a écrit dans le message de groupe de
discussion :
4bdd8814$0$16563$426a34cc@news.free.fr...
Bonjour,
Je possède 13 feuilles sur un classeur avec des tableaux différents.
Je souhaite les trier en ordre alphabétique en prenant la colonne B en
référence (à partir de B4 jusqu'à la fin de ma colonne).
J'ai enregistrer une macro grâce à l'enregistreur (qui fonctionne) mais
quand je l'intègre à ma macro, chaque feuille est bien triée mais ...
seulement les 3 premières colonnes alors que le reste de la ligne lui
correspondant ne suit pas.
Indice : les 3 1eres colonnes ont de commun que se sont des formules
faisant appel à la feuille 1. Mais je bloque quand même.
voici l'extrait de mon code. Peut-être est-ce une faute de ponctuation ?
For j = 13 To 1 Step -1
If j <> 2 Then
ActiveWorkbook.Worksheets(j).Range(Cells(4, 1), Cells(nbpersonnel +
4, 29)).Select
ActiveWorkbook.Worksheets(j).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(j).Sort.SortFields.Add
Key:=Worksheets(j).Range(Cells(4, 2), Cells(nbpersonnel + 4, 2)),
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(j).Sort
.SetRange ActiveWorkbook.Worksheets(j).Range(Cells(3, 1),
Cells(nbpersonnel + 4, 29))
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End If
Next
Merci d'avance de votre aide précieuse.
Tu dois passer en mode de calcul manuel le temps que
la procédure va exécuter le tri. J'ai ajouté 2 lignes de
code à cet égard à la procédure :
Avant :
Application.Calculation = xlCalculationManual
Après :
Application.Calculation = xlCalculationAutomatic
'----------------------------------
Sub test()
Dim DerCol As Integer, DerLig As Long
Dim Sh As Worksheet
Application.Calculation = xlCalculationManual
For Each Sh In Worksheets
With Sh
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
With .Range("A4", .Cells(DerLig, DerCol))
.Sort Key1:=.Item(2, 2), Order1:=xlAscending, Header:=xlYes
End With
End With
Next
Application.Calculation = xlCalculationAutomatic
End Sub
'----------------------------------
"Sylian" a écrit dans le message de news:
4bde750c$0$16944$Excuse moi pour ces "imprécisions" et merci encore pour ton aide. Je vais
essayer de décrire un peu mieux mon projet.
Déjà, j'ai bien essayé ta macros qui bien que deux fois plus petite que la
mienne, arrive au même résultat ; un trie sur les 3 première colonnes sans
que le reste des lignes leur correspondant ne suivent.
Voici globalement mon projet. J'ai une feuille, la première, avec des
colonnes de référence A pour le prénom, B pour le nom, C pour l'age. Les
autres feuilles du classeur reprennent à chaque fois ces références dans
les mêmes colonnes. Pour la feuille 2 dans la cellule B4 est inscrit
þuill1!B4 idem pour la feuille 3 etc... Le reste des tableau à droite de
ces 3 colonnes est libre pour rentrer des données à la main.
J'ai créé un macro de gestion de personne en feuille 1 avec la possibilité
de supprimer ou d'ajouter un prénom+nom+age. La suppression avec liste
déroulante fonctionne très bien. L'insertion fonctrionne si je rajoute une
personne à la fin de tableau mais au moment de trier, c'est la catastrophe
! Dans les feuilles de 2 à 13, seules les 3 première colonnes sont triés
(en référence à la première). J'aurai aimé avoir le reste de la ligne
(hormis A B C) vierge et inséré à la bonne position d'après un trie
alphabétique se référant au nom (B)
J'espère avoir été plus clair. C'est très simple à voir mais difficile à
décrire. A la rigueur je peux extrapoler un exemple simple et l'envoyer via
ci-joint pour une meilleur compréhension ... si tu veux :-/
Merci d'avance
michdenis a écrit :Je t'ai conçu une macro. L'as-tu essayée? Fonctionne-t-elle ?
Sinon qu'est-ce que la procédure proposée ne réussit pas
à faire ?
Si tu rencontres d'autres difficultés avec ton application,
tu peux les décrire... Pour des raisons de compréhension
prenons-les une à la fois. Pour ce faire, tu dois les décrire
séparément et te rappeler que les répondeurs n'ont pas ton
application sous les yeux. Cela demande d'être très explicite.
"Sylian" a écrit dans le message de groupe de
discussion : 4bddbca3$0$12194$
Merci beaucoup pour ton aide dominicale !
Cependant si le trie fonctionne, j'ai exactement le même problème.
En fait peut-être est-ce que cela vient du fait que je créé un nom en
colonne B de la feuille (1) et que pour toutes les feuilles suivante
j'ai mis þuil1!A(numéro de la ligne correspondante) ?
Je bloque encore
michdenis a écrit :Bonjour,
Essaie comme ceci :
'----------------------------------
Sub test()
Dim DerCol As Integer, DerLig As Long
Dim Sh As Worksheet
For Each Sh In Worksheets
With Sh
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
With .Range("A4", .Cells(DerLig, DerCol))
.Sort Key1:=.Item(2, 2), Order1:=xlAscending, Header:=xlYes
End With
End With
Next
End Sub
'----------------------------------
"Sylian" a écrit dans le message de groupe de
discussion :
4bdd8814$0$16563$
Bonjour,
Je possède 13 feuilles sur un classeur avec des tableaux différents.
Je souhaite les trier en ordre alphabétique en prenant la colonne B en
référence (à partir de B4 jusqu'à la fin de ma colonne).
J'ai enregistrer une macro grâce à l'enregistreur (qui fonctionne) mais
quand je l'intègre à ma macro, chaque feuille est bien triée mais ...
seulement les 3 premières colonnes alors que le reste de la ligne lui
correspondant ne suit pas.
Indice : les 3 1eres colonnes ont de commun que se sont des formules
faisant appel à la feuille 1. Mais je bloque quand même.
voici l'extrait de mon code. Peut-être est-ce une faute de ponctuation ?
For j = 13 To 1 Step -1
If j <> 2 Then
ActiveWorkbook.Worksheets(j).Range(Cells(4, 1), Cells(nbpersonnel +
4, 29)).Select
ActiveWorkbook.Worksheets(j).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(j).Sort.SortFields.Add
Key:=Worksheets(j).Range(Cells(4, 2), Cells(nbpersonnel + 4, 2)),
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(j).Sort
.SetRange ActiveWorkbook.Worksheets(j).Range(Cells(3, 1),
Cells(nbpersonnel + 4, 29))
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End If
Next
Merci d'avance de votre aide précieuse.
C'est qui lui ? Je ne le connais pas !
Bonjour,
C'est qui lui ? Je ne le connais pas !
;-)
Je vais devoir m'absenter un temps indéterminé,
le temps d'affectuer une réparation "HardWare"
sur mon ordi. principal.
C'est qui lui ? Je ne le connais pas !
Bonjour,
C'est qui lui ? Je ne le connais pas !
;-)
Je vais devoir m'absenter un temps indéterminé,
le temps d'affectuer une réparation "HardWare"
sur mon ordi. principal.
C'est qui lui ? Je ne le connais pas !
Bonjour,
C'est qui lui ? Je ne le connais pas !
;-)
Je vais devoir m'absenter un temps indéterminé,
le temps d'affectuer une réparation "HardWare"
sur mon ordi. principal.