Transfert de données dans un fichier

Bonjour à tous,

J'ai un fichier avec des données sur plusieurs milliers de lignes.

Dans la colonne "N" j'ai des prénoms. Est il possible avec un bouton, de trier par prénom et d'envoyer la ou les lignes correspondant aux prénoms, dans des dossiers nommés aux prénoms sur un local ou un serveur.

Je m'explique :

Dans la colonne "N", j'ai le prénom Elsa, en appuyant sur le bouton, la ligne avec le prénom Elsa se transfert dans un fichier nommé Elsa.

Si plusieurs lignes avec le même prénom (Pierre) : l'intégralité des lignes vas dans le dossier nommé Pierre.

Si besoin d'info supplémentaires, je reste dispo :)

Bonjour Jess,

Voici un premier essai pas testé... Le code porte sur toute la zone utilisée de la feuille active (il faudra donc adapter les références de la source).

Tout d'abord, on considère que les données sont triées par prénom ici (si ce n'est pas le cas, il faudra ajouter une macro de tri avant d'entamer les transferts).

Ici, le prénom est supposé se trouver en colonne 1 et les fichiers de destination sont censés se trouver dans le dossier Téléchargements. Lorsqu'un fichier n'existe pas, il est créé :

Sub test()
application.screenupdating = false
with activesheet.usedrange
    t = .value
    thead = .rows(1).value
    i = 2
    do while i <= ubound(t)
        chemin$ = environ("userprofile") & "\Downloads\" & t(i, 1) & ".xlsx"
        if t(i, 1) <> t(i - 1, 1) then
            redim temp(1 to ubound(t), 1 to ubound(t, 2)): n = 0
            do
                n = n + 1
                for k = lbound(t, 2) to ubound(t, 2)  
                    temp(n, k) = t(i, k)
                next k
                i = i + 1
                if i > ubound(t) then exit do
            loop while t(i, 1) = t(i - 1, 1)
            i = i - 1
            with GetClasseur(chemin)
                with .sheets(1)
                    if dir(chemin) = "" then .rows(1).resize(1, ubound(thead, 2)).value = thead
                    nvl = .cells(.rows.count, 1).end(xlup).row + 1
                    .cells(nvl, 1).resize(n, ubound(t, 2)).value = temp
                end with
                application.displayalerts = false
                .saveas chemin, 51
                .close true
                application.displayalerts = true
            end with
        end if
        i = i + 1
    loop
end with
application.screenupdating = true
end sub

function GetClasseur(spath$) as workbook
if dir(spath) = "" then
    Set GetClasseur = workbooks.add
else
    set GetClasseur = workbooks.open(spath)
end if
end function

Cdlt,

Bonsoir 3GB,

Merci pour ton retour, cela me va parfaitement !

Encore une fois tu m'as bien aidé

Je profite de ce poste pour une dernière question :

Dans la colonne A, j'ai donc positionné les prénoms et cela fonctionne parfaitement.

Est il possible, d'ajouter une colonne vide en B avec si le prénom en A1 = Jean, alors la Cellule B1 = Dupont, si la cellule A2 = Elsa alors la cellule B2 = Dubois, Si la cellule A3 = Jean alors la cellule B3 = Dupont …

J'ai environ 150 noms à ajouter aux prénoms, que je finirai de "coder"

Bonne soirée à toiJess

Bonsoir Jess,

Oui, c'est possible mais ça me semble être un tout autre problème, pas suffisamment bien expliqué.

Je te propose de créer un nouveau sujet avec un fichier exemple contenant la liste des correspondances entre prénoms et noms permettant de réaliser l'opération sur le tableau principal.

Cdlt,

Je vais faire ça

Merci à toi

Rechercher des sujets similaires à "transfert donnees fichier"