Macro pour nouveau fichier

red-69 Messages postés 15 Statut Membre -  
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 ?
Configuration: Windows XP
Firefox 2.0.0.14

4 réponses

  1. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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+
    1
    1. red-69 Messages postés 15 Statut Membre
       
      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
      0
      1. lermite222 Messages postés 9042 Statut Contributeur 1 199 > red-69 Messages postés 15 Statut Membre
         
        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.
        0
      2. red-69 Messages postés 15 Statut Membre > lermite222 Messages postés 9042 Statut Contributeur
         
        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 +
        0
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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.
    1
    1. red-69 Messages postés 15 Statut Membre
       
      tu as raison lermite222. je n'avais ni créé par avant les répertoires car je croyais que la macro le ferait d'elle même et d'autre part il serait plus judicieux de créer un rep, ca sera plus simple pour retrouver les fichiers.
      0
      1. lermite222 Messages postés 9042 Statut Contributeur 1 199 > red-69 Messages postés 15 Statut Membre
         
        Tu n'a pas répondu à la 2èm question. Si j'ai vu juste ce serrait mieux de créer les sous-rep par macro.
        0
  3. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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+
    0
  4. red-69 Messages postés 15 Statut Membre
     
    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 ?
    0