Via une macro, exporter des données -repose sur un critere
Fermé
bibi42000
Messages postés
11
Date d'inscription
vendredi 22 novembre 2013
Statut
Membre
Dernière intervention
29 novembre 2013
-
22 nov. 2013 à 11:56
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 29 nov. 2013 à 11:37
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 29 nov. 2013 à 11:37
A voir également:
- Via une macro, exporter des données -repose sur un critere
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro word - Guide
- Chrome exporter favoris - Guide
- Exporter favoris firefox - Guide
- Exporter une video youtube - Guide
10 réponses
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
22 nov. 2013 à 13:38
22 nov. 2013 à 13:38
Bonjour,
Pour pouvoir "t'accompagner" il faudrait avoir un chemin, ou au moins un sentier, praticable.
Tu ne donne aucun exemple concret, pas de début de code...
Commence par faire les manipulations nécessaires avec l'éditeur de macro ensuite poste le code obtenu, nous t'aiderons à le finaliser.
A+
Pour pouvoir "t'accompagner" il faudrait avoir un chemin, ou au moins un sentier, praticable.
Tu ne donne aucun exemple concret, pas de début de code...
Commence par faire les manipulations nécessaires avec l'éditeur de macro ensuite poste le code obtenu, nous t'aiderons à le finaliser.
A+
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
22 nov. 2013 à 18:56
22 nov. 2013 à 18:56
En attendant, et avec les renseignements donnés, un début...
Sub CreerClasseur()A+
Dim Lig As Long, Debut As Integer, Col As Integer
Dim Chemin As String, Nom As String, Extention As String
Dim Wks As Worksheet
Set Wks = ThisWorkbook.ActiveSheet
Debut = 2 'ligne où commencer
Extention = "2013-001.xls"
Chemin = "C:\Users\m02410\Desktop\" 'répertoire de destination des nouveaux classeur
For Lig = Debut To Range("A" & Rows.Count).End(xlUp).Row
If Cells(Lig, "A") <> "" Then
Nom = Cells(Lig, "A") & Extention
If Dir(Chemin & Nom) = "" Then 'vérifie que le classeur n'est pas déjà créer
Workbooks.Add
For Col = 1 To 3
Cells(1, Col) = Wks.Cells(Lig, Col)
Next Col
ActiveWorkbook.SaveAs (Chemin & Nom)
ActiveWorkbook.Close
End If
End If
Next Lig
End Sub
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
Modifié par lermite222 le 23/11/2013 à 15:36
Modifié par lermite222 le 23/11/2013 à 15:36
Il fonctionne sur ton classeur avec quelque petite modif pour contrer les caprices d'Excel.
Modifie par exemple en Nantes 1, Nantes 2 etc..
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Note: Je ne répond pas aux MP pour les questions techniques. Et ma boule de cristal est cassée .
Sub CopierClasseur()Mais tu dois un peu rectifier la colonne des villes, il est impossible d'avoir deux classeurs au même nom dans une répertoire.
Dim Lig As Long, Debut As Integer, Col As Integer
Dim Chemin As String, Nom As String, Extention As String
Dim Wks As Worksheet
Set Wks = ThisWorkbook.ActiveSheet
Debut = 2 'ligne où commencer
Extention = "2013-001.xls"
Chemin = "C:\Users\m02410\Desktop\" 'répertoire de destination des nouveaux classeur
For Lig = Debut To Range("A" & Rows.Count).End(xlUp).Row
If Cells(Lig, "A") <> "" Then
Nom = Cells(Lig, "A") & Extention
If Dir(Chemin & Nom) = "" Then 'vérifie que le classeur n'est pas déjà créer
With Workbooks.Add
For Col = 1 To 3
.ActiveSheet.Cells(1, Col).Value = Wks.Cells(Lig, Col).Value
Next Col
.SaveAs (Chemin & Nom), FileFormat:=xlExcel8
.Close
End With
End If
End If
Next Lig
End Sub
Modifie par exemple en Nantes 1, Nantes 2 etc..
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Note: Je ne répond pas aux MP pour les questions techniques. Et ma boule de cristal est cassée .
bibi42000
Messages postés
11
Date d'inscription
vendredi 22 novembre 2013
Statut
Membre
Dernière intervention
29 novembre 2013
23 nov. 2013 à 17:06
23 nov. 2013 à 17:06
Merci pour ton retour.Juste un point sur "ville".Je souhaite obtenir un classeur qui se crée pour chaque ville distincte.Au sein de nantes par exemple, si mon fichier de base contenanit 4 lignes, alors ces 4 lignes doivent etre dedans.Et aisni de suite pour chaque ville .tu me suis? je t 'envoi un exemple de fichier qui se crée au regard du fichier source 2013-001 que j ai transmis plus tot.merci pour ton analyse
bibi42000
Messages postés
11
Date d'inscription
vendredi 22 novembre 2013
Statut
Membre
Dernière intervention
29 novembre 2013
23 nov. 2013 à 17:11
23 nov. 2013 à 17:11
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
23 nov. 2013 à 17:55
23 nov. 2013 à 17:55
Bon, tu va encore ajouter d'autre conditions ?? j'aime pas beaucoup de faire et refaire parce qu'ont ajoute des trucs..:-(
Bref, ceci dit,
Rectifie les titres de ton classeur principal.
Le nom des villes se suive toujours ?
Des villes pourraient êtres ajoutées ?
Tâche de penser à tout et tu dis.
Bref, ceci dit,
Rectifie les titres de ton classeur principal.
Le nom des villes se suive toujours ?
Des villes pourraient êtres ajoutées ?
Tâche de penser à tout et tu dis.
bibi42000
Messages postés
11
Date d'inscription
vendredi 22 novembre 2013
Statut
Membre
Dernière intervention
29 novembre 2013
25 nov. 2013 à 10:14
25 nov. 2013 à 10:14
salut lermite
desolé, je pensai avoir abordé cet eclatement de fichier par ville.
tu comprendras mon besoin, a partir du fichier source (https://www.cjoint.com/c/CKxmvWybY3J
) - creer d'autres fichier excel. chacun d'entre eux representant les lignes d'une meme ville
exemple cible:https://www.cjoint.com/c/CKxrlfogROg
Pour les villes, se sera toujours les memes (si d'autres je rajouterai dans le code).toujours en colonne 2
Je mettrai dans macro, un tri croissant par ville
Le fichier source aura toujours en ligne 1-les entetes de colonnes (il faudrait pouvoir les rapattrier dans chaque fichier excel crée par la macro)
Selon fichier source, il peut y avoir moins ou plus de colonne
Selon fichier source;il peut y avoir moins ou plus de ligne par ville
Les villes toujours en colonne 2 dans fichier source
J espere avoir ete plus precis, ton aide me sera precieuse
Merci à toi
desolé, je pensai avoir abordé cet eclatement de fichier par ville.
tu comprendras mon besoin, a partir du fichier source (https://www.cjoint.com/c/CKxmvWybY3J
) - creer d'autres fichier excel. chacun d'entre eux representant les lignes d'une meme ville
exemple cible:https://www.cjoint.com/c/CKxrlfogROg
Pour les villes, se sera toujours les memes (si d'autres je rajouterai dans le code).toujours en colonne 2
Je mettrai dans macro, un tri croissant par ville
Le fichier source aura toujours en ligne 1-les entetes de colonnes (il faudrait pouvoir les rapattrier dans chaque fichier excel crée par la macro)
Selon fichier source, il peut y avoir moins ou plus de colonne
Selon fichier source;il peut y avoir moins ou plus de ligne par ville
Les villes toujours en colonne 2 dans fichier source
J espere avoir ete plus precis, ton aide me sera precieuse
Merci à toi
bibi42000
Messages postés
11
Date d'inscription
vendredi 22 novembre 2013
Statut
Membre
Dernière intervention
29 novembre 2013
25 nov. 2013 à 10:45
25 nov. 2013 à 10:45
Mea culpa Ville toujours en colonne 1 comme dans fichier de base transmis
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
25 nov. 2013 à 12:20
25 nov. 2013 à 12:20
Re,
Ca devrait le faire...
A+
Ca devrait le faire...
Option Explicit
Option Compare Text
Sub CopierClasseur()
Dim Lig As Long, LigIt As Long, Debut As Integer, Col As Integer, DerCol As Integer
Dim Chemin As String, Nom As String, Extention As String, Ville As String
Dim Wks As Worksheet, Plage As Range
Set Wks = ThisWorkbook.ActiveSheet
Debut = 2 'ligne où commencer
Extention = "2013-001.xls"
DerCol = Wks.Range("A1").SpecialCells(xlCellTypeLastCell).Column
Set Plage = Wks.Range(Cells(1, 1), Cells(1, DerCol))
' pourait mettre l'extention avec le nom du classeur mais attention,
'au cas ou tu passe à Excel2007 faudra sauver ce classeur sous xls.
'Extention = Wks.Name
Chemin = "C:\Users\m02410\Desktop\" 'répertoire de destination des nouveaux classeur
'Chemin = "C:\test\"
For Lig = Debut To Range("A" & Rows.Count).End(xlUp).Row
If Cells(Lig, "A") <> "" Then
Nom = Cells(Lig, "A") & Extention
If Dir(Chemin & Nom) = "" Then 'vérifie que le classeur n'est pas déjà créer
'Voir Combien de lign(s) à copier
Ville = Wks.Cells(Lig, 1).Value
LigIt = Lig
Do While Ville = Cells(LigIt + 1, 1).Value
LigIt = LigIt + 1
Loop
With Workbooks.Add
'copie les titres
Plage.Copy Range("A1")
'Copie les données
Wks.Range(Wks.Cells(Lig, 1), Wks.Cells(LigIt, DerCol)).Copy Range("A2")
.SaveAs (Chemin & Nom), FileFormat:=xlExcel8
.Close
Lig = LigIt
End With
End If
End If
Next Lig
Set Wks = Nothing
End Sub
A+
bibi42000
Messages postés
11
Date d'inscription
vendredi 22 novembre 2013
Statut
Membre
Dernière intervention
29 novembre 2013
26 nov. 2013 à 10:57
26 nov. 2013 à 10:57
Lermite, ca fonctionne , un grand merci pour cette disponibilité et cette réalisation.
Il me reste des elemnts a perfectionner mais l'essentiel est present
Je vais essayer de creer
1)un Tri sur ville au demarrage de la macro
2)rendre cette macro accessible à plusieurs utilisateurs,
3) faire sauter la fenetre de "compatibilité" qui s'ouvre a chaque création de fichier (par ville)
Il faut cliquer sur Oui, c est chiant, j aimerai qu'il disparaisse
Encore merci,
@+
Il me reste des elemnts a perfectionner mais l'essentiel est present
Je vais essayer de creer
1)un Tri sur ville au demarrage de la macro
2)rendre cette macro accessible à plusieurs utilisateurs,
3) faire sauter la fenetre de "compatibilité" qui s'ouvre a chaque création de fichier (par ville)
Il faut cliquer sur Oui, c est chiant, j aimerai qu'il disparaisse
Encore merci,
@+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bibi42000
Messages postés
11
Date d'inscription
vendredi 22 novembre 2013
Statut
Membre
Dernière intervention
29 novembre 2013
22 nov. 2013 à 15:18
22 nov. 2013 à 15:18
Salut Lermite222
Merci pour ton retour
Tu as raison, voila un essai mais infructueux et insuffisant
Tu comprendras, que je veux faire une boucle qui interroge fichier d'origine sur le champs "Ville"
Si pour une meme ville, ya 3 lignes , macro crée un fichier excel où elle deposera ces 3 lignes (en reprenant ligne1-les entetes)
En suite ville suivante, (une autre), elle prends les lignes cncernaient et crée un excel en copiant ces lignes tout en ramenant aussi ligne1-entetes de colonnes
Et ainsi de suite
Dans mon code, je ne sais pas gerer la boucle (tant que ?), alors je fais filtre sur champs "ville" et je copy colle-
Bien à toi, ou t'envoyer le fichier excel source ? le code?
Merci pour ton retour
Tu as raison, voila un essai mais infructueux et insuffisant
Tu comprendras, que je veux faire une boucle qui interroge fichier d'origine sur le champs "Ville"
Si pour une meme ville, ya 3 lignes , macro crée un fichier excel où elle deposera ces 3 lignes (en reprenant ligne1-les entetes)
En suite ville suivante, (une autre), elle prends les lignes cncernaient et crée un excel en copiant ces lignes tout en ramenant aussi ligne1-entetes de colonnes
Et ainsi de suite
Dans mon code, je ne sais pas gerer la boucle (tant que ?), alors je fais filtre sur champs "ville" et je copy colle-
Bien à toi, ou t'envoyer le fichier excel source ? le code?
bibi42000
Messages postés
11
Date d'inscription
vendredi 22 novembre 2013
Statut
Membre
Dernière intervention
29 novembre 2013
Modifié par pijaku le 22/11/2013 à 15:24
Modifié par pijaku le 22/11/2013 à 15:24
Sub ll() ' ' ll Macro ' 'Classeur de base se nomme 2013-001 ' Range("A1").Select 'prendre les lignes et colonnes actives du classeur de base Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("A2:A18") _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 'Tri sur les villes du classeur de base(colonne A) With ActiveWorkbook.Worksheets("Feuil1").Sort .SetRange Range("A1:G18") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With 'la premiere ville suite au tri c est Brest, elle apparait sur la ligne 2 et 3- ligne 1 = entete de colonne' Range("A1").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlUp)).Select Range("A1:G3").Select 'Copier coller des lignes avec Brest (dans leur totalité) vers un nouveau fichier excel Selection.Copy Workbooks.Add Cells.Select Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False ActiveSheet.Paste Application.CutCopyMode = False ChDir "C:\Users\m02410\Desktop" 'lieu d'enregistrement, sans interet 'Le best serait que le nom du fichier excel soit crée en auto sur le modele Ville+NomClasseurdebase ActiveWorkbook.SaveAs Filename:="C:\Users\m02410\Desktop\Brest2013-001.xls", _ FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _ ReadOnlyRecommended:=False, CreateBackup:=False Windows("Classeur1").Activate Windows("2013-001.xls").Activate Cells.Select 'Comme je ne sais pas gerer le systeme de boucle, je fais tri sur ville, je prends la suivante, ici Lyon => A ameliorer) 'Le gros sujet c est celui là, il faudrait une boucle qui balaye ville - un tant que ? et qui exporte ... Selection.AutoFilter ActiveSheet.Range("$A$1:$G$18").AutoFilter Field:=1, Criteria1:="Lyon" Range("A1").Select Range(Selection, Selection.End(xlToRight)).Select Range("A1:G6").Select 'Copier coller des lignes avec Lyon (dans leur totalité) vers un nouveau fichier excel (sur meme principe que Brest)-Je reproduis cela pour chaque ville du classeur de base Selection.Copy Workbooks.Add Cells.Select Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False ActiveSheet.Paste Application.CutCopyMode = False ActiveWorkbook.SaveAs Filename:="C:\Users\m02410\Desktop\Lyon2013-001.xls", _ FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _ ReadOnlyRecommended:=False, CreateBackup:=False Windows("2013-001.xls").Activate ActiveSheet.Range("$A$1:$G$18").AutoFilter Field:=1, Criteria1:="Nantes" 'Copier coller des lignes avec Nantes (dans leur totalité) vers un nouveau fichier excel (sur meme principe que Brest) Range("A1").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Workbooks.Add Cells.Select Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False ActiveSheet.Paste Application.CutCopyMode = False ActiveWorkbook.SaveAs Filename:="C:\Users\m02410\Desktop\Nantes2013-001.xls" _ , FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _ ReadOnlyRecommended:=False, CreateBackup:=False Windows("2013-001.xls").Activate ActiveSheet.Range("$A$1:$G$18").AutoFilter Field:=1, Criteria1:="Nimes" 'Copier coller des lignes avec Nimes (dans leur totalité) vers un nouveau fichier excel (sur meme principe que Brest) Range("A1").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Workbooks.Add Cells.Select Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False ActiveSheet.Paste Application.CutCopyMode = False ActiveWorkbook.SaveAs Filename:="C:\Users\m02410\Desktop\Nimes2013-001.xls", _ FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _ ReadOnlyRecommended:=False, CreateBackup:=False Windows("2013-001.xls").Activate ActiveSheet.Range("$A$1:$G$18").AutoFilter Field:=1 Range("A1").Select ActiveWorkbook.Save End Sub
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
22 nov. 2013 à 18:24
22 nov. 2013 à 18:24
OK, ont a déjà un point de départ.
Tu peu déposer ton classeur (sans donnée confidentielle) sur Cjoint.com
Et mettre le lien dans un poste suivant.
A+
Tu peu déposer ton classeur (sans donnée confidentielle) sur Cjoint.com
Et mettre le lien dans un poste suivant.
A+
bibi42000
Messages postés
11
Date d'inscription
vendredi 22 novembre 2013
Statut
Membre
Dernière intervention
29 novembre 2013
23 nov. 2013 à 12:23
23 nov. 2013 à 12:23
Merci lermite. trouves le lien du fichier source.merci pour ce code.il fonctionnerait sur ce fichier ?
https://www.cjoint.com/c/CKxmvWybY3J
merci a toi
https://www.cjoint.com/c/CKxmvWybY3J
merci a toi
bibi42000
Messages postés
11
Date d'inscription
vendredi 22 novembre 2013
Statut
Membre
Dernière intervention
29 novembre 2013
27 nov. 2013 à 11:38
27 nov. 2013 à 11:38
Lermite, ca fonctionne , un grand merci pour cette disponibilité et cette réalisation.
Il me reste des elemnts a perfectionner mais l'essentiel est present
Je vais essayer de creer
1)un Tri sur ville au demarrage de la macro
2)rendre cette macro accessible à plusieurs utilisateurs,
3) faire sauter la fenetre de "compatibilité" qui s'ouvre a chaque création de fichier (par ville)
Il faut cliquer sur Oui, c est chiant, j aimerai qu'il disparaisse
Encore merci,
@+ et bon courage
Il me reste des elemnts a perfectionner mais l'essentiel est present
Je vais essayer de creer
1)un Tri sur ville au demarrage de la macro
2)rendre cette macro accessible à plusieurs utilisateurs,
3) faire sauter la fenetre de "compatibilité" qui s'ouvre a chaque création de fichier (par ville)
Il faut cliquer sur Oui, c est chiant, j aimerai qu'il disparaisse
Encore merci,
@+ et bon courage
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
Modifié par lermite222 le 28/11/2013 à 11:40
Modifié par lermite222 le 28/11/2013 à 11:40
Re,
Si tu en a encore besoin
Faiit tout, la création des classeurs ou la mise à jour si existe déjà, commence par le tri.
Avec une tite cerise sur le gâteau.. pour autant que tu aime les cerises, sinon, tu supprime.
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Note: Je ne répond pas aux MP pour les questions techniques. Et ma boule de cristal est cassée .
Si tu en a encore besoin
Faiit tout, la création des classeurs ou la mise à jour si existe déjà, commence par le tri.
Avec une tite cerise sur le gâteau.. pour autant que tu aime les cerises, sinon, tu supprime.
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Note: Je ne répond pas aux MP pour les questions techniques. Et ma boule de cristal est cassée .
bibi42000
Messages postés
11
Date d'inscription
vendredi 22 novembre 2013
Statut
Membre
Dernière intervention
29 novembre 2013
29 nov. 2013 à 10:10
29 nov. 2013 à 10:10
Lermite,
C est topissimme ton code.j adore..la cerise excellente (j achete)
Ce travail est à 95% de sa reussite, je te tire mon chapeau et te remercie
ma charge est de conserver dans les fichiers crées via la macro, le formalisme du tableau de base (tableau de d'origine) Ajustement des colonnes, renvoyer à la ligne....
Pour conclure, cette macro que je dois partager entre collaborateurs doit etre partagée puis il faudrait qu'elle puisse focntionner sur un classeur nommé different de celui de notre exemple 2013-001- faudrait que ca marche sur un classeur 2013-002 etc
Enfin encore many thanks,
C est topissimme ton code.j adore..la cerise excellente (j achete)
Ce travail est à 95% de sa reussite, je te tire mon chapeau et te remercie
ma charge est de conserver dans les fichiers crées via la macro, le formalisme du tableau de base (tableau de d'origine) Ajustement des colonnes, renvoyer à la ligne....
Pour conclure, cette macro que je dois partager entre collaborateurs doit etre partagée puis il faudrait qu'elle puisse focntionner sur un classeur nommé different de celui de notre exemple 2013-001- faudrait que ca marche sur un classeur 2013-002 etc
Enfin encore many thanks,
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
29 nov. 2013 à 11:37
29 nov. 2013 à 11:37
faudrait que ca marche sur un classeur 2013-002 etc
Voir la remarque dans le code avec le nom du classeur.
A+
Voir la remarque dans le code avec le nom du classeur.
A+