XL 2013 Tri automatique en VBA et exportation sur plusieurs fichiers

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Lhomheureux

XLDnaute Nouveau
Bonsoir à tous.
J'ai besoin de votre aide pour effectuer le tri et l'importation en VBA des données d'un tableau pour que se soit automatique.
le fichier excel est fourni en annexe avec un détail du rendu attendu se trouvant dans la feuille "SOCIETE". j'avoue que là c'est un peu un casse-tête pour moi.

Je vous remercie de prendre du temps pour y apporter de votre "code".
 

Pièces jointes

Solution
VB:
    wsSource.[i3].FormulaLocal = "=NON(ESTNA(EQUIV(F3;'" & wsRep.Name & "'!" & rSearch.Address & ";0)))"
    rSource.AdvancedFilter Action:=xlFilterInPlace, criteriarange:=wsSource.[i2:i3]
Dans cette partie de code :
  • j'initialise la cellule I3 avec la formule =NON(ESTNA(EQUIV(F3;'" & wsRep.Name & "'!" & rSearch.Address & ";0))) qui vérifie si le nom de quartier existe dans la table spécifiée par wsRep et nomZone (voir plus haut initialisation wsRep et rSearch ). La cellule I2 reste vide (nom de critère facultatif)
  • Puis j'applique la méthode AdvancedFilter avec comme paramètre la zone de critère (I2:I3) initialisée par la ligne précédente. AdvancedFilter affiche toutes les lignes pour lesquelles la formule en I3 est VRAI...
Bonjour,

Voici une solution en VBA, facilement adaptable à l'ajout de nouvelles feuilles de répartition.
NB: la feuille Localisation par zone est inutile, elle fait double emploi avec lla (les) feuille(s) de répartition.
J'espère que ça vous conviendra.

Cordialement,
- LR

Merci beaucoup pour ce point de départ qui est génial.
Néanmoins, il y a quelques erreurs au niveau du tri. Des éléments d'autres zones se retrouvent dans la "zone PK". J'aimerais que tu puisses un peu mieux m'expliquer ce que tu as fais dans la partie "INIT.CRITERES". Je crois que c'est à ce niveau que tu détermines les critères de tri, mais je ne comprends pas très bien les (i3).

Concernant la feuille "localisation par zone" je l'ai mis parce que c'est sur l'ensemble de ses zones que doivent se faire le tri. J'ai mis le tri final de la "zone PK" afin que je puisse moi même étendre la procédure aux autres localisations après.
 
VB:
    wsSource.[i3].FormulaLocal = "=NON(ESTNA(EQUIV(F3;'" & wsRep.Name & "'!" & rSearch.Address & ";0)))"
    rSource.AdvancedFilter Action:=xlFilterInPlace, criteriarange:=wsSource.[i2:i3]
Dans cette partie de code :
  • j'initialise la cellule I3 avec la formule =NON(ESTNA(EQUIV(F3;'" & wsRep.Name & "'!" & rSearch.Address & ";0))) qui vérifie si le nom de quartier existe dans la table spécifiée par wsRep et nomZone (voir plus haut initialisation wsRep et rSearch ). La cellule I2 reste vide (nom de critère facultatif)
  • Puis j'applique la méthode AdvancedFilter avec comme paramètre la zone de critère (I2:I3) initialisée par la ligne précédente. AdvancedFilter affiche toutes les lignes pour lesquelles la formule en I3 est VRAI, c'es-à-dire toutes celles dont la localisation figure dans la table spécifiée par wsRep/rSearch.

Comme tu vois, je ne recherche jamais dans la feuille LOCALISATION PAR ZONE. C'est uniquement d'après les feuilles REPARTITION xx que je fais le tri. S'il y a des erreurs de tri, c'est à cause du contenu des tables figurant dans LOCALISATION PK.

Cordialement,
--
LR
 
VB:
    wsSource.[i3].FormulaLocal = "=NON(ESTNA(EQUIV(F3;'" & wsRep.Name & "'!" & rSearch.Address & ";0)))"
    rSource.AdvancedFilter Action:=xlFilterInPlace, criteriarange:=wsSource.[i2:i3]
Dans cette partie de code :
  • j'initialise la cellule I3 avec la formule =NON(ESTNA(EQUIV(F3;'" & wsRep.Name & "'!" & rSearch.Address & ";0))) qui vérifie si le nom de quartier existe dans la table spécifiée par wsRep et nomZone (voir plus haut initialisation wsRep et rSearch ). La cellule I2 reste vide (nom de critère facultatif)
  • Puis j'applique la méthode AdvancedFilter avec comme paramètre la zone de critère (I2:I3) initialisée par la ligne précédente. AdvancedFilter affiche toutes les lignes pour lesquelles la formule en I3 est VRAI, c'es-à-dire toutes celles dont la localisation figure dans la table spécifiée par wsRep/rSearch.

Comme tu vois, je ne recherche jamais dans la feuille LOCALISATION PAR ZONE. C'est uniquement d'après les feuilles REPARTITION xx que je fais le tri. S'il y a des erreurs de tri, c'est à cause du contenu des tables figurant dans LOCALISATION PK.

Cordialement,
--
LR

Merci Laurent pour ton aide et tes explications.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour