Macro pour nouveau fichier
red-69
Messages postés
15
Statut
Membre
-
lermite222 Messages postés 9042 Statut Contributeur -
lermite222 Messages postés 9042 Statut Contributeur -
Bonjour,
Dans un tableur excel ,je voudrais créer une macro pour avoir un nouveau fichier qui se créer en fonction des dates qui se situent dans la colonne H.
J'aimerai avoir un fichier si la date est inférieur à 31/12/2008; un fichier pour 2009; un pour 2010 et un autre pour le reste. Est-ce que cela est possible ?
Dans un tableur excel ,je voudrais créer une macro pour avoir un nouveau fichier qui se créer en fonction des dates qui se situent dans la colonne H.
J'aimerai avoir un fichier si la date est inférieur à 31/12/2008; un fichier pour 2009; un pour 2010 et un autre pour le reste. Est-ce que cela est possible ?
Configuration: Windows XP Firefox 2.0.0.14
4 réponses
-
c'est effectivement plus claire..
Voila un début de macro qui te donne les lignes à suivre, à toi de la complèté, revient si tu veux avec quelques détails et les lignes que tu y aurras ajouté.
Sub TrieNom() Dim i As Long, e As Long, D As String, NomFich As String Dim NomAverifie As String, CeClasseur As String ' NomAverifie = ? je ne sais Sheets("Feuil1").Activate 'A adapter au nom de la feuille CeClasseur = ActiveWorkbook.Name For i = 1 To Range("G1").SpecialCells(xlCellTypeLastCell).Row NomAverifie = Cells(i, 7).Value If i > 1 Then 'vérifié si ce nom existe déjà For e = 1 To i - 1 If UCase(Cells(e, 7).Value) = UCase(NomAverifie) Then 'le nom existe déjà ouvrir le fichier D = Year(Cells(i, 8).Value) NomFich = "C:\NOM\DATE\" & D & ".xls" Workbooks.Open NomFich 'ICI ajouté les données dans le classeur 'Ensuite sauver ActiveWorkbook.Save Workbooks(CeClasseur).Activate Workbooks(NomFich).Close GoTo Continuer End If Next e GoTo CreeLigne Else 'c'est la 1ère ligne CreeLigne: 'initialiser le chemin en fonction de la date D = Year(Cells(i, 8).Value) NomFich = "C:\NOM\DATE\" & D & ".xls" 'Créer fichier en fonction de la date Workbooks.Add 'ici mettre les données dans le nouveau classeur 'sauver le classeur sous nouveau nom ActiveWorkbook.SaveAs Filename:=NomFich Workbooks(CeClasseur).Activate Workbooks(NomFich).Close End If Continuer: Next i End Sub
A+-
merci lermite222 de te pencher sur mon problème.
j'utilise ta macro et j'ai une erreur 1004 au niveau de la ligne ActiveWorkbook.SaveAs Filename:=NomFich- Ca veux dire que le nom n'est pas valide, met un point d'arrêt sur cette ligne (F9) ensuite passe ta souris sur NomFich et dit-moi ce que cela donne, il est possible que les noms de fichiers uniquement avec un nombre ne soit pas valide
Sauve ton fichier principal sous un autre nom en cas de fausse manip dans la macro.
Oublie pas, tu doit le fermer et réouvrir le bon. - cela donne NomFich = "C:\NOM\DATE\2008.xls"
mais en fait je me rends compte qu'il n'est pas nécessaire d'avoir 2 fois la date dans le chemin. avoir une chemin C:\NOM\2008 serait plus adapté. IL faudrait alors ajouter une ligne indiquant que pour les dates < 2008, les ranger dans le fichier C:\NOM\2008
pour 2008< date < 2009 : C:\NOM\2009
pour 2009< date < 2010 : C:\NOM\2010
pour date > 2010 : C:\NOM\2011 plus
a +
-
-
Je pense a une chose, avais tu créer les répertoirs ? je crois que non, alors l'erreur vient de là, tu doit d'abord créer le répertoir
si oui tu doit donc aussi créer un répertoir ?
Je comprend pas bien, parce qu'alors suffirais de créer manuellement 4 classeurs et alors ajouté dedans !
Mais une autre chose m'interpelle... est-ce que NOM doit être remplacé par le nom du client ?
par exemple C:\George\2008 mais si c'est comme ca tu va surcharger le root, vaudrait mieux créer un rep par exemple
C:\Client\George\2008
C:\Client\André\2009
C:\Client\André\Avant2008
Tâche d'éclaircir ce sujet. -
Bonjour,
Nouveau fichier ? , nouveau classeur ? nouvelle feuille ? autre ?
Suivant ta réponse nous pourront t'aiguillé, mais donner une solution à toutes les possibilités serrait trop long
A+ -
je m'explique mieux :
j'ai un tableau excel avec une colonne NOM en G et une colonne DATE en H.
il me faudrait une macro créant un nouveau classeur à chaque nouveau nom (si le nom revient plusieurs fois il faudrait que la macro compile les données dans un seul classeur), qu'elle copie les données propres à chaque nom et qu'en fonction de cela, elle créer un nouveau classeur avec un tri effectué sur les date.
le fichier final devrait avoir un chemin du genre : C:\NOM\DATE\2008 puis C:\NOM\DATE\2009 puis C:\NOM\DATE\2010 et enfin C:\NOM\DATE\2012
est-ce plus compréhensible ?