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