Automatisation tri sur plusieurs feuilles d'un coup via une même colonne

Bonjour à tous,

j’ai un soucis que j’aimerai vous faire partager, je sais qu’avec un script VBA cela est possible mais je ne m’y connais pas du tout et je n’ai pas trouvé mon bonheur :confused:

Je vous ai mis en pièce jointe un fichier excel comme exemple,
Le but est de rajouter un client a la fin qui s’appelle « David » par exemple,
De le mettre en bas sur toutes les feuilles manuellement ou non, je n’ai pas beaucoup de pages dans mon vrai excel donc cela ne me dérange pas
Mais ma vraie question est, quel est le script a utiliser pour qu’une fois que l’on rajoute un nouveau client, toutes les pages que l’on choisi, ici seul les pages clients/contrats et intervention doivent réagir au script, remette dans l’odre croissant le noms des clients avec bien entendu le bon nouvel ordre de toutes les lignes

J’ai trouvé ca par exemple

Option Explicit

Sub Tri()
Dim Ws As Worksheet

For Each Ws In Sheets
If Ws.Name <> Sheets(1).Name Then
Ws.Range(« A3:P100 »).Sort key1:=Ws.Range(« A3 »), order1:=xlAscending, dataoption1:=xlSortNormal, Header:=xlNo
End If
Next Ws
End Sub

Où A2:P100 represente la taille de mon tableau a retrier par rapport a la colonne A mais cela ne marche que sur la page active, peut etre qu’il faut un code complètement différent, j’ai besoin de vos lumières pour que cela fonctionne sur les pages voulues

Merci par avance de votre aide :slight_smile:

Classeur1.xlsx (12,9 Ko)

Bonjour

Je ne suis pas certain d’avoir bien compris ceci :

" toutes les pages que l’on choisi"

C’est à dire ?

Celle active à l’écran ?

Je suis parti avec cette hypothèse pour te proposer cette solution en VBA

Dans l’onglet actif à l’écran double clique sur la cellule A2

le tri de toutes les données est effectué sur la colonne A

Attention le traitement détermine le nombre de colonne à intégrer dans le tri sur la base de la ligne 3 qui porte le nom de celle-ci
Il doit en être de même pour tous les onglets à traiter (nom des colonnes en ligne 3)

Fichier de type xlsm nécessaire pour les fonctionnements VBA à conserver impérativement

Testes et dis moi

Classeur1.xlsm (23,9 Ko)

En faite, j’ai 3 feuilles que je veux trier en une fois par la colonne clients
la feuille qui s’appelle client est la base, j’entend par la la que c’est ici que je rajouterai les clients et par un collé avec liaison, les autres feuilles auront tout changement sur le nom des clients et rajout juste en le faisant par la feuille client

Et via un VBA quand je rajoute un client, je peux retrier toutes les feuilles ayant la colonne clients

par exemple

clients contrats
Alfred 120 €
George 0 €
Wilfrid 600 €
William 0 €

on ajoute David

clients contrats
Alfred 120 €
George 0 €
Wilfrid 600 €
William 0 €
David 0 €

et avec le VBA

clients contrats
Alfred 120 €
David 0 €
George 0 €
Wilfrid 600 €
William 0 €

Ca c’est le résultat sur la feuille client et sur la feuille contrat et intervention, je rajoute david par collé avec liaison et avec le VBA ca me met aussi toutes les lignes triées grace aux noms de clients

par exemple

interventions avant vba

clients Janvier Février Mars Avril Mai Juin Juillet Août Septembre Octobre Novembre Décembre Total
Alfred 0
George 180 40 220
Wilfrid 28 72 100
William 99 99
David 0

apres VBA

clients Janvier Février Mars Avril Mai Juin Juillet Août Septembre Octobre Novembre Décembre Total
Alfred 0
David 0
George 180 40 220
Wilfrid 28 72 100
William 99 99

le but est que tous les clients soient triés en un script
au lieu de faire des modifs clients a la main (le collé par liaison qui evite ca) et des tris par feuilles voulus en un seul coup au lieu de le faire feuille par feuille

A moins que le collé avec liaison soit une mauvaise idée et il existe une meilleure solution

Et le soucis que j’ai avec la formule que j(ai montré plus haut, le code fonctionne sans le collé avec liaison mais si wilfrid arrive en ligne 6 et non 5 mes formules inter feuille sur les clients ne prend pas en compte ce changement, je ne sais pas si ma demande a une vraie solution ou non :confused:

Qu’entends tu par :

« Ca c’est le résultat sur la feuille client et sur la feuille contrat et intervention, je rajoute david par collé avec liaison »

Qu’est ce qu’un collé avec liaison ???

Une formule ?

« le but est que tous les clients soient triés en un script
au lieu de faire des modifs clients a la main (le collé par liaison qui evite ca) et des tris par feuilles voulus en un seul coup au lieu de le faire feuille par feuille »

C’est très bien mais encore faut il pour le traitement lui donner la liste des feuilles concernées il ne le devinera pas tout seul

Comment as tu prévu la chose ?

Une liste quelque part ?

Un choix en fonction des noms d’onglet avec pour ceux concernés un moyen de les détecter ?

Il faut aller plus loin dans le context de ce traitement pour un automatisme total

Ma proposition que je t’ai transmise t’oblige juste à activer onglet par onglet concerné en double cliquant sur la cellule A2 de chacun d’eux

Ce n’est pas un automatisme total mais demande juste une petite intervention pour cibler les bonnes feuille et ainsi d’éviter de trouver une autre astuce à cette fin

Maintenant à toi de me dire

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.