Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème de trie

21 réponses
Avatar
Sylian
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.

10 réponses

1 2 3
Avatar
Jacky
Tout un hasard !


Dans la même région Saint-hyac.....
Etonnant non ??
--
Salutations
JJ


"michdenis" a écrit dans le message de news:
| Sauf que lui, comme toi, fait de la moto


Tout un hasard !

Avatar
Sylian
Jacky a écrit :
Tout un hasard !


Dans la même région Saint-hyac.....
Etonnant non ??




Merci beaucoup pour l'astuce je vais l'essayer dès ce soir et je vous
recontacte au plus vite pour vous tenir au courant. Car, je vais
également faire subir une petite maintenance hardware au PC mais
j'espère que l'absence ne sera que de courte durée.

Encore merci et content que vous vous retrouviez à côté de mon problème
lol (pour faire de la moto ? re-lol)
Avatar
Sylian
Mieux qu'un long discours voici un exemple :
http://www.cijoint.fr/cjlink.php?file=cj201005/cijGuwzRuY.xls
La macro est lancé à partir de la feuille 1 sur un bouton appelé GESTION
en haut.

ça fonctionne bien pour la suppression ou l'ajout de ligne mais le trie
c'est la catastrophe ! Je n'ai pas une ligne vierge en face du nouveau
nom inséré une fois trié (sans le tri c'est ok).

Merci encore pour votre aide !
Avatar
michdenis
Ton problème n'a rien à voir avec la procédure de tri.

Quand tu ajoutes une nouvelle donnée dans les feuilles 2,3,4,...
tu ajoutes une formule dans ces feuilles. La formule se lit
comme suit : = "Feuil1! & la dernière cellule de la plage en
feuille1.

Le problème survient après le tri, immédiatement après avoir exécuté
cette ligne de code : Application.Calculation = xlCalculationAutomatic
Quand le classeur revient en mode de calcul automatique, il applique
la formule que tu as mise dans les feuilles 2,3,4 ... Les données en
feuil1 ont changé de place mais ta formule dans les autres feuilles
pointent toujours vers la même cellule d'avant le tri. Forcément,
le résultat sera faux... et comme il n'y a que les 3 premières colonnes
qui ont des formules, les données des autres colonnes ne suivront pas.

Voilà pour l'explication. Je ne sais pas ce que tu désires faire, mais je
pense qu'il faudrait que tu revois ton approche du problème pour
simplifier la procédure.

Explique ce que tu tentes de faire, il y aura peut être quelqu'un qui
pourra t'aider... je n'ai pas vraiment beaucoup de temps à te consacrer !








"Sylian" a écrit dans le message de news:
4bdf1d28$0$21312$
Mieux qu'un long discours voici un exemple :
http://www.cijoint.fr/cjlink.php?file=cj201005/cijGuwzRuY.xls
La macro est lancé à partir de la feuille 1 sur un bouton appelé GESTION
en haut.

ça fonctionne bien pour la suppression ou l'ajout de ligne mais le trie
c'est la catastrophe ! Je n'ai pas une ligne vierge en face du nouveau nom
inséré une fois trié (sans le tri c'est ok).

Merci encore pour votre aide !
Avatar
Sylian
Ce que je tente de faire ?
Et bien je vais ré-essayer d'expliquer.
Je remet le lien au cas où ...
http://www.cijoint.fr/cjlink.php?file=cj201005/cijGuwzRuY.xls

Je veux simplement insérer une ligne vierge où seront pré-remplie les 3
premières colonnes (prénom/nom/age). Ensuite, je trie le tableau en
ordre alphabétique par nom (colonne B). Si bien qu'au résultat, j'ai le
nouveau prénom/nom/age inséré à la bonne place dans le tableau, suivi du
reste de sa ligne vierge.

J'essaye de faire ça en conservant les formules de tels sortes que si
j'ai fait une faute d'orthographe sur un nom, je change manuellement que
celui de la première feuille qui sera automatiquement reporté sur les
autres feuilles.

C'est l'étape du tri qui bloque ... même si ça n'a rien à voir avec la
"procédure" du tri comme l'a très bien décrit mchdenis.
Peut-être faut-il effectivement revoir la procédure d'approche mais ...
help quand même. Ça ne doit pas être si compliqué un ajout/suppression
de ligne triées sur toutes les feuilles, non ? si ? heu ...

michdenis a écrit :
Ton problème n'a rien à voir avec la procédure de tri.

Quand tu ajoutes une nouvelle donnée dans les feuilles 2,3,4,...
tu ajoutes une formule dans ces feuilles. La formule se lit
comme suit : = "Feuil1! & la dernière cellule de la plage en
feuille1.

Le problème survient après le tri, immédiatement après avoir exécuté
cette ligne de code : Application.Calculation = xlCalculationAutomatic
Quand le classeur revient en mode de calcul automatique, il applique
la formule que tu as mise dans les feuilles 2,3,4 ... Les données en
feuil1 ont changé de place mais ta formule dans les autres feuilles
pointent toujours vers la même cellule d'avant le tri. Forcément,
le résultat sera faux... et comme il n'y a que les 3 premières colonnes
qui ont des formules, les données des autres colonnes ne suivront pas.

Voilà pour l'explication. Je ne sais pas ce que tu désires faire, mais je
pense qu'il faudrait que tu revois ton approche du problème pour
simplifier la procédure.

Explique ce que tu tentes de faire, il y aura peut être quelqu'un qui
pourra t'aider... je n'ai pas vraiment beaucoup de temps à te consacrer !








"Sylian" a écrit dans le message de news:
4bdf1d28$0$21312$
Mieux qu'un long discours voici un exemple :
http://www.cijoint.fr/cjlink.php?file=cj201005/cijGuwzRuY.xls
La macro est lancé à partir de la feuille 1 sur un bouton appelé GESTION
en haut.

ça fonctionne bien pour la suppression ou l'ajout de ligne mais le trie
c'est la catastrophe ! Je n'ai pas une ligne vierge en face du nouveau nom
inséré une fois trié (sans le tri c'est ok).

Merci encore pour votre aide !




Avatar
michdenis
Si j'ai bien compris ....

Regarde ton fichier : http://cjoint.com/?fecIeNHlqr



"Sylian" a écrit dans le message de news:
4bdf47e4$0$7637$
Ce que je tente de faire ?
Et bien je vais ré-essayer d'expliquer.
Je remet le lien au cas où ...
http://www.cijoint.fr/cjlink.php?file=cj201005/cijGuwzRuY.xls

Je veux simplement insérer une ligne vierge où seront pré-remplie les 3
premières colonnes (prénom/nom/age). Ensuite, je trie le tableau en ordre
alphabétique par nom (colonne B). Si bien qu'au résultat, j'ai le nouveau
prénom/nom/age inséré à la bonne place dans le tableau, suivi du reste de
sa ligne vierge.

J'essaye de faire ça en conservant les formules de tels sortes que si j'ai
fait une faute d'orthographe sur un nom, je change manuellement que celui
de la première feuille qui sera automatiquement reporté sur les autres
feuilles.

C'est l'étape du tri qui bloque ... même si ça n'a rien à voir avec la
"procédure" du tri comme l'a très bien décrit mchdenis.
Peut-être faut-il effectivement revoir la procédure d'approche mais ...
help quand même. Ça ne doit pas être si compliqué un ajout/suppression de
ligne triées sur toutes les feuilles, non ? si ? heu ...

michdenis a écrit :
Ton problème n'a rien à voir avec la procédure de tri.

Quand tu ajoutes une nouvelle donnée dans les feuilles 2,3,4,...
tu ajoutes une formule dans ces feuilles. La formule se lit
comme suit : = "Feuil1! & la dernière cellule de la plage en
feuille1.

Le problème survient après le tri, immédiatement après avoir exécuté
cette ligne de code : Application.Calculation = xlCalculationAutomatic
Quand le classeur revient en mode de calcul automatique, il applique
la formule que tu as mise dans les feuilles 2,3,4 ... Les données en
feuil1 ont changé de place mais ta formule dans les autres feuilles
pointent toujours vers la même cellule d'avant le tri. Forcément,
le résultat sera faux... et comme il n'y a que les 3 premières colonnes
qui ont des formules, les données des autres colonnes ne suivront pas.

Voilà pour l'explication. Je ne sais pas ce que tu désires faire, mais je
pense qu'il faudrait que tu revois ton approche du problème pour
simplifier la procédure.

Explique ce que tu tentes de faire, il y aura peut être quelqu'un qui
pourra t'aider... je n'ai pas vraiment beaucoup de temps à te consacrer !








"Sylian" a écrit dans le message de news:
4bdf1d28$0$21312$
Mieux qu'un long discours voici un exemple :
http://www.cijoint.fr/cjlink.php?file=cj201005/cijGuwzRuY.xls
La macro est lancé à partir de la feuille 1 sur un bouton appelé GESTION
en haut.

ça fonctionne bien pour la suppression ou l'ajout de ligne mais le trie
c'est la catastrophe ! Je n'ai pas une ligne vierge en face du nouveau
nom inséré une fois trié (sans le tri c'est ok).

Merci encore pour votre aide !



Avatar
michdenis
En passant, si tu désires, tu peux remplacer cette section
de la procédure :

'-------------------------
With Sheets(a)
.Range("A" & MyLine).EntireRow.Insert
.Range("A4:A" & Ligne).Formula = "=" & Sheets(1).Name & "!" &
.Range("A4").Address(0, 0)
.Range("B4:B" & Ligne).Formula = "=" & Sheets(1).Name & "!" &
.Range("B4").Address(0, 0)
.Range("C4:C" & Ligne).Formula = "=" & Sheets(1).Name & "!" &
.Range("C4").Address(0, 0)
End With
'-------------------------

Par cela, c'est suffisant :
'-------------------------
With Sheets(a)
.Range("A" & MyLine).EntireRow.Insert
.Range("A4:C" & Ligne).Formula = "=" & Sheets(1).Name & "!" &
.Range("A4").Address(0, 0)
End With
'-------------------------





"michdenis" a écrit dans le message de news:

Si j'ai bien compris ....

Regarde ton fichier : http://cjoint.com/?fecIeNHlqr



"Sylian" a écrit dans le message de news:
4bdf47e4$0$7637$
Ce que je tente de faire ?
Et bien je vais ré-essayer d'expliquer.
Je remet le lien au cas où ...
http://www.cijoint.fr/cjlink.php?file=cj201005/cijGuwzRuY.xls

Je veux simplement insérer une ligne vierge où seront pré-remplie les 3
premières colonnes (prénom/nom/age). Ensuite, je trie le tableau en ordre
alphabétique par nom (colonne B). Si bien qu'au résultat, j'ai le nouveau
prénom/nom/age inséré à la bonne place dans le tableau, suivi du reste de
sa ligne vierge.

J'essaye de faire ça en conservant les formules de tels sortes que si
j'ai fait une faute d'orthographe sur un nom, je change manuellement que
celui de la première feuille qui sera automatiquement reporté sur les
autres feuilles.

C'est l'étape du tri qui bloque ... même si ça n'a rien à voir avec la
"procédure" du tri comme l'a très bien décrit mchdenis.
Peut-être faut-il effectivement revoir la procédure d'approche mais ...
help quand même. Ça ne doit pas être si compliqué un ajout/suppression de
ligne triées sur toutes les feuilles, non ? si ? heu ...

michdenis a écrit :
Ton problème n'a rien à voir avec la procédure de tri.

Quand tu ajoutes une nouvelle donnée dans les feuilles 2,3,4,...
tu ajoutes une formule dans ces feuilles. La formule se lit
comme suit : = "Feuil1! & la dernière cellule de la plage en
feuille1.

Le problème survient après le tri, immédiatement après avoir exécuté
cette ligne de code : Application.Calculation = xlCalculationAutomatic
Quand le classeur revient en mode de calcul automatique, il applique
la formule que tu as mise dans les feuilles 2,3,4 ... Les données en
feuil1 ont changé de place mais ta formule dans les autres feuilles
pointent toujours vers la même cellule d'avant le tri. Forcément,
le résultat sera faux... et comme il n'y a que les 3 premières colonnes
qui ont des formules, les données des autres colonnes ne suivront pas.

Voilà pour l'explication. Je ne sais pas ce que tu désires faire, mais
je
pense qu'il faudrait que tu revois ton approche du problème pour
simplifier la procédure.

Explique ce que tu tentes de faire, il y aura peut être quelqu'un qui
pourra t'aider... je n'ai pas vraiment beaucoup de temps à te consacrer
!








"Sylian" a écrit dans le message de news:
4bdf1d28$0$21312$
Mieux qu'un long discours voici un exemple :
http://www.cijoint.fr/cjlink.php?file=cj201005/cijGuwzRuY.xls
La macro est lancé à partir de la feuille 1 sur un bouton appelé
GESTION en haut.

ça fonctionne bien pour la suppression ou l'ajout de ligne mais le trie
c'est la catastrophe ! Je n'ai pas une ligne vierge en face du nouveau
nom inséré une fois trié (sans le tri c'est ok).

Merci encore pour votre aide !








Avatar
Sylian
Michdenis tu es ...
tu es ...
tu es GENIAL !!!

Tu as résolu le problème pour 12 de mes 13 feuilles ! Je te laisse
évalué le pourcentage. C'est extra merci beaucoup pour tout. J'ai peiner
à expliquer mon problème mais tu l'as résolu en main de maitre en
quelques lignes. Je m'incline. Bravo et encore merci.

PS : si je galère trop pour ma dernière feuille pourrais-je te soliciter
une ultime fois ? Mais pour l'instant, j'essaye, je bataille, je bidouille !

michdenis a écrit :
En passant, si tu désires, tu peux remplacer cette section
de la procédure :

'-------------------------
With Sheets(a)
.Range("A" & MyLine).EntireRow.Insert
.Range("A4:A" & Ligne).Formula = "=" & Sheets(1).Name & "!" &
..Range("A4").Address(0, 0)
.Range("B4:B" & Ligne).Formula = "=" & Sheets(1).Name & "!" &
..Range("B4").Address(0, 0)
.Range("C4:C" & Ligne).Formula = "=" & Sheets(1).Name & "!" &
..Range("C4").Address(0, 0)
End With
'-------------------------

Par cela, c'est suffisant :
'-------------------------
With Sheets(a)
.Range("A" & MyLine).EntireRow.Insert
.Range("A4:C" & Ligne).Formula = "=" & Sheets(1).Name & "!" &
..Range("A4").Address(0, 0)
End With
'-------------------------





"michdenis" a écrit dans le message de news:

Si j'ai bien compris ....

Regarde ton fichier : http://cjoint.com/?fecIeNHlqr



"Sylian" a écrit dans le message de news:
4bdf47e4$0$7637$
Ce que je tente de faire ?
Et bien je vais ré-essayer d'expliquer.
Je remet le lien au cas où ...
http://www.cijoint.fr/cjlink.php?file=cj201005/cijGuwzRuY.xls

Je veux simplement insérer une ligne vierge où seront pré-remplie les 3
premières colonnes (prénom/nom/age). Ensuite, je trie le tableau en ordre
alphabétique par nom (colonne B). Si bien qu'au résultat, j'ai le nouveau
prénom/nom/age inséré à la bonne place dans le tableau, suivi du reste de
sa ligne vierge.

J'essaye de faire ça en conservant les formules de tels sortes que si
j'ai fait une faute d'orthographe sur un nom, je change manuellement que
celui de la première feuille qui sera automatiquement reporté sur les
autres feuilles.

C'est l'étape du tri qui bloque ... même si ça n'a rien à voir avec la
"procédure" du tri comme l'a très bien décrit mchdenis.
Peut-être faut-il effectivement revoir la procédure d'approche mais ...
help quand même. Ça ne doit pas être si compliqué un ajout/suppression de
ligne triées sur toutes les feuilles, non ? si ? heu ...

michdenis a écrit :
Ton problème n'a rien à voir avec la procédure de tri.

Quand tu ajoutes une nouvelle donnée dans les feuilles 2,3,4,...
tu ajoutes une formule dans ces feuilles. La formule se lit
comme suit : = "Feuil1! & la dernière cellule de la plage en
feuille1.

Le problème survient après le tri, immédiatement après avoir exécuté
cette ligne de code : Application.Calculation = xlCalculationAutomatic
Quand le classeur revient en mode de calcul automatique, il applique
la formule que tu as mise dans les feuilles 2,3,4 ... Les données en
feuil1 ont changé de place mais ta formule dans les autres feuilles
pointent toujours vers la même cellule d'avant le tri. Forcément,
le résultat sera faux... et comme il n'y a que les 3 premières colonnes
qui ont des formules, les données des autres colonnes ne suivront pas.

Voilà pour l'explication. Je ne sais pas ce que tu désires faire, mais
je
pense qu'il faudrait que tu revois ton approche du problème pour
simplifier la procédure.

Explique ce que tu tentes de faire, il y aura peut être quelqu'un qui
pourra t'aider... je n'ai pas vraiment beaucoup de temps à te consacrer
!








"Sylian" a écrit dans le message de news:
4bdf1d28$0$21312$
Mieux qu'un long discours voici un exemple :
http://www.cijoint.fr/cjlink.php?file=cj201005/cijGuwzRuY.xls
La macro est lancé à partir de la feuille 1 sur un bouton appelé
GESTION en haut.

ça fonctionne bien pour la suppression ou l'ajout de ligne mais le trie
c'est la catastrophe ! Je n'ai pas une ligne vierge en face du nouveau
nom inséré une fois trié (sans le tri c'est ok).

Merci encore pour votre aide !










Avatar
michdenis
| si je galère trop pour ma dernière feuille pourrais-je te soliciter
| une ultime fois ? Mais pour l'instant, j'essaye, je bataille, je bidouille !

Sur ce forum, tu peux poser toutes les questions que tu désires.
Il y a sûrement un intervenant sur ce forum qui pourra t'aider à
trouver une solution convenable.
Avatar
Mgr T. Banni
en effet, tout le monde ne peut être parfait :-)
Mgr T.B. (prêt à canoniser ce génie, malgré tout...à la St Michel, oeuf corse)

"Sylian" a écrit dans le message de news: 4be0985f$0$402$
Michdenis tu es ...
tu es ...
tu es GENIAL !!!
1 2 3