TRI automatique de données pour transfert vers fichier 2

Bonjour a tous,

Dans un "fichier 1" qui possède des lignes avec des tris sur les colonnes, je désire mettre en place un tri automatique sur certaines lignes dont le critère de tri se trouve en colonne V, afin de les tranferer automatiquement dans un autre fichier 2

Le critère que je désire sélectionner en colonne V est "01.3.1 Chaussée" Toutes les lignes contenant ce critère devront passer automatiquement dans un autre fichier dénommé "fichier2"

J'ai commencé à voir sur le Forum, des instructions en VBA mais je ne sais pas l'adapter à mon besoin.

Merci de me diriger vers une solution

Cordialement

Alain

Bonjour,

une proposition à tester.

La macro crée, à la première utilisation, le fichier2 dans le même dossier que celui dans lequel se trouve le classeur source.

Bonsoir Game Over,

C'est pas mal , ce que tu me proposes.

Effectivement, lorsque je modifie une cellule de la colonne V pour y faire apparaître "01.3.1 Chaussée" , la ligne s'incrémente sur la page de l'onglet "tri"

Je ne comprends pas tout du code, mais ça va venir, du moins, je l'espère.

On doit pouvoir transposer ça avec deux fichiers distincts: F1 en Base de donnée, et F2 en fichier destination (tri.) ?

Autre chose: peut on facilement choisir les cellules de la ligne que l'on transpose ? Je veux dire, peut on transposer seulement certaines cellules de la ligne, et pas toute la ligne ?

En tout cas, je suis content de voir que ça doit pouvoir prendre forme sans que ce soit trop compliqué à mettre en œuvre.

merci de ton aide et de cette première tentative VBA réussie!!

alaintrt a écrit :

Effectivement, lorsque je modifie une cellule de la colonne V pour y faire apparaître "01.3.1 Chaussée" , la ligne s'incrémente sur la page de l'onglet "tri"

L'onglet Tri est un onglet intermédiaire qui, finalement, disparait lorsque la macro a terminé.

alaintrt a écrit :

On doit pouvoir transposer ça avec deux fichiers distincts: F1 en Base de donnée, et F2 en fichier destination (tri.) ?

c'est ce que fait la macro... lorsque tu appuies sur le bouton Run, la macro crée ou ouvre un fichier appelé fichier2.xls

alaintrt a écrit :

Autre chose: peut on facilement choisir les cellules de la ligne que l'on transpose ? Je veux dire, peut on transposer seulement certaines cellules de la ligne, et pas toute la ligne ?

oui, on supprimera juste les colonnes inutiles.

J'ai repris ça depuis mon bureau sous Excel 2010 et c'est plus clair. ( un petit peu plus clair )

est ce possible de ne pas avoir le bouton RUN ? peut on avoir un fonctionnement automatique transparent?

Le fichier destination "fichier 2" peut il être positionné dans un répertoire différent ? (En fait peut modifier le path comme on veut ou est on restreint ? )

merci pour ces infos

alaintrt a écrit :

peut on avoir un fonctionnement automatique transparent?

Je ne sais pas ce que c'est

alaintrt a écrit :

Le fichier destination "fichier 2" peut il être positionné dans un répertoire différent ? (En fait peut modifier le path comme on veut ou est on restreint ? )

merci pour ces infos

oui, suffit de préciser le nouveau chemin

Game Over a écrit :
alaintrt a écrit :

peut on avoir un fonctionnement automatique transparent?

Je ne sais pas ce que c'est

Je veux dire, peut on avoir la même chose, mais sans la contrainte du bouton pour activer la macro.

Peut on supprimer le bouton "RUN" ?

merci à toi !

comment souhaites tu lancer la macro dans ce cas ?

je ne sais pas.

Si il y a une seule et unique façon d'activer une macro et qu'elle consiste en un bouton, je conserverais le bouton.

ma question était peut être mal posée ou mal exprimée.

Peut on lancer une macro comme celle ci sans avoir à utiliser un bouton ?

quelles autres solutions existe t il ?

C'est aussi par curiosité et pour comprendre le fonctionnement.

[EDIT : Lorsque tu double-cliques]

Lorsque tu cliques sur la cellule A1 de ta feuille (couleur de fond grisée), la macro est lancée.

Bonsoir Game Over,

merci pour ta recherche de solutions; je ne sais pas si c'est parce que je suis à la maison sous Excel 2003, mais le clic sur la cel A1 ne fonctionne pas correctement: il affiche une fenêtre de débogage qui contient:

Erreur d'exécution 438

Propriété ou méthode non gérée par cet objet

continuer fin débogage aide

le bouton "continuer" n'est pas actif

un clic sur fin débloque la situation

un clic su débogage renvoie à la fenêtre VBA avec une ligne en jaune

With Worksheets("Tri").Sort

Ceci dit, inutile de poursuivre sur cette voie; un bouton sera tout aussi bien; je vois que tu cherches des solutions à chaque fois et que tu passes du temps pour moi. Merci à toi.

Mais voyons plutôt un autre point:

Si tu veux bien m'expliquer comment sélectionner certaines cellules sur la ligne ça sera pour moi plus intéressant à maitriser

Si tu peux me mettre des lignes de commentaires dans le code VBA ??

Merci encore pour le temps passé.

Je ne vois vraiment pas du tout pourquoi le tri cesserait de fonctionner juste parce que le lancement de la macro a été modifié... par contre, effectivement, il existait peut être un risque de plantage dans le cas ou la valeur de recherche était inexistante dans la colonne V. J'ai donc corrigé ce petit bug.

Je te renvoie une version avec une petite modif au niveau du tri...

J'ai également ajouté les commentaires.

Pour la sélection des cellules, en règle générale, on utilise la syntaxe suivante :

Range("A1").select

Range("A3:C7").select

Mais la sélection des plages ralentit la macro donc on préfère éviter ce type de procédure.

Autrement dit : au lieu de coder

Range("A1").Select
Selection.ClearContents

comme le ferait l'enregistreur de Macros

on va préférer

Range("A1").ClearContents

qui effectue exactement la même procédure sans sélectionner la plage au préalable

Dis moi si la macro plante toujours, parce qu'ici, elle fonctionne sans problème.

Celle ci fonctionne bien au dble clic, pas de problème.

Merci pour les remarques, ça me permet de mieux comprendre le fonctionnement

Le fichier BDD qu'on utilise ici est un petit extrait du fichier Base De Donnée original.

Puis je reprendre la commande VBA et l'appliquer sur le fichier d'origine ?

Y a t il du code à modifier ?

merci

alaintrt a écrit :

Puis je reprendre la commande VBA et l'appliquer sur le fichier d'origine ?

Y a t il du code à modifier ?

merci

Normalement si les formats, noms des onglets etc... sont respectés, tu ne devrais pas avoir de souci.

ok

je vais essayer

je crois que j'avais allégé le fichier pour faire un essai avec toi:

le fichier BDD utilisé ici comporte les mêmes colonnes que le fichier BDD original mais pas autant de lignes

1009 pour l'original

La macro est écrite de façon à être opérationnelle quel que soit le nombre de lignes de ta BDD.

A partir du moment ou ton tableau commence à la même ligne, même colonne... ça devrait être bon.

prob

l'onglet Tri est créé et une fenêtre s'affiche, bloquant la poursuite de la commande

erreur d'exécution 1004

erreur définie par l'application ou par l'objet

un clic sur débogage fait apparaitre le module de code avec cette ligne en jaune.

Sheets.Add after:=Sheets(Sheets.Count)

ActiveSheet.Name = "Tri"

Set wbsS = ActiveSheet

Sheets("FNE 2012").Range("A1", Cells(1, Columns.Count).End(xlToLeft)).Copy ActiveSheet.Range("A1")

With Sheets("FNE 2012")

Set myCell = .Columns("V").Find(aa, , xlValues, xlWhole)

Set myAnchor = myCell


j'ai probablement omis ou modifié qlq chose...

le nom de la feuille traitée est il le même ?

l'en tête commence t il aussi à la cellule A1 ?

sinon il va falloir m'envoyer une copie de ton fichier

Ben oui

la feuille se nomme "FNE 2012" et commence en A1 par une cel identique.

Il semblerait que le prob vienne de la détection de la dernière colonne lorsqu'il exécute cette ligne

Sheets("FNE 2012").Range("A1", Cells(1, Columns.Count).End(xlToLeft)).Copy ActiveSheet.Range("A1")


détection de la colonne AR1

va falloir que tu m'envoies ton fichier.

utilise la messagerie privée ou le mail

Rechercher des sujets similaires à "tri automatique donnees transfert fichier"