Crée un historique [Résolu]

Signaler
-
 EnguerrandP -
Il faut que je crée un historique :
voila comment je voit le fonctionnement:
1- appuis sur le type de commandes (Email,Fax,Téléphone)
2- le programme va voir si dans le dossier "Historique" le dossier année "20XX" éxiste
3- Si il n'éxiste pas il le crée est dans se dossier il crée un classeur excel "Fs" et il y copie la fiche de commandes.
4- Sinon il va dans se dossier et regarde si le classeur "Fs" éxiste
5- Si il éxiste pas il le crée et il y copie la fiche de commandes.
6- Si il éxiste il y copie la fiche de commandes.

Voila le code que j'ai pour l'instant:

Dim Chemin As String
Dim CheminA As String
Dim CheminB As String
Chemin = "C:\Historique"
Année = "2013"

If Dir(Chemin & Année, 16) = "" Then

MkDir Chemin & Année
CheminA = "C:\Historique" & Année & ""
Application.ScreenUpdating = False
Sheets("Archive").Copy
With ActiveWorkbook
.SaveAs Filename:=CheminA & Fs
.Sheets("Archive").Name = "Archive" & "_" & Date_C
.Close
End With

ElseIf Dir(Chemin & Année, 16) <> "" Then

If ("C:\Historique" & Année & "" & Fs & ".xls") = "" Then

CheminB = "C:\Historique" & Année & ""
Application.ScreenUpdating = False
Sheets("Archive").Copy
With ActiveWorkbook
.SaveAs Filename:=CheminB & Fs
.Sheets("Archive").Name = "Archive" & "_" & Date_C
.Close
End With

ElseIf ("C:\Historique" & Année & "" & Fs & ".xls") <> "" Then



End If

End If

22 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
Bonjour,
Qu'est-ce-que tu veucx, finalement ?
Savoir si un dossier existe ou non pour décider en connaissance de cause ? ===>>>
 '1) on crée le dossier de toutes manières (et s'il existe déjà, on gère)
   On Error Resume Next
   MkDir "d:\blablaa"
   On Error GoTo 0
   '2) on regarde s'il est vide
   If Dir("d:\blabla") = "" Then MsgBox "vide"
   'ou 3) on regarde s'il contient un dichier particulier
   If Dir("d:\blabla\entree.frm") <> "" Then MsgBox "présent"

A toi de jouer comme tu l'entends avec ces bases.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
L'enregistreur de macro permet de générer un code.
Il te reste, par la suite, à l'améliorer/modifier/épurer selon tes besoins.

Ce code peut, par la suite, être utilisé sur d'autres PC.
Bien sûr, si ton code réfère à des répertoires, ceux-ci doivent être accessibles aux autres...

Si tu n'utilises pas de contrôles autres que ceux qui viennent avec Excel et/ou VBA, il ne devrait pas y avoir de conflit entre ces PC.

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Il faut que je crée un historique


1 il faut d'abord apprendre à saluer
2 quelle est ta question ?
Bonjour
ma qestion c'est pourquoi es que lorsque le dossier année éxiste je n'arrive pas a crée le nouveau classeur fournisseur
et
comment je peut copier une feuille excel vers un classeur deja éxistant
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Est-ce que tu cherches à copier une feuille dans un répertoire ou dans un classeur qui est dans un répertoire ?

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
et utilise le 3e bouton en partant de la droite au-dessus de ton post quand tu mets du code. Tu passes ta souris au-dessus et tu choisis VB.


MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
quand tu postes un code utilise la coloration
syntaxique 3 iem icon à partir de la droite

Dim Chemin As String 
Dim CheminA As String 
Dim CheminB As String 
Chemin = "C:\Historique" 
Année = "2013" 

If Dir(Chemin & Année, 16) = "" Then 

MkDir Chemin & Année 
CheminA = "C:\Historique" & Année & "" 
Application.ScreenUpdating = False 
Sheets("Archive").Copy 
With ActiveWorkbook 
.SaveAs Filename:=CheminA & Fs 
.Sheets("Archive").Name = "Archive" & "_" & Date_C 
.Close 
End With 

ElseIf Dir(Chemin & Année, 16) <> "" Then 

If ("C:\Historique" & Année & "" & Fs & ".xls") = "" Then 

CheminB = "C:\Historique" & Année & "" 
Application.ScreenUpdating = False 
Sheets("Archive").Copy 
With ActiveWorkbook 
.SaveAs Filename:=CheminB & Fs 
.Sheets("Archive").Name = "Archive" & "_" & Date_C 
.Close 
End With 

ElseIf ("C:\Historique" & Année & "" & Fs & ".xls") <> "" Then 



End If 

End If 


If ("C:\Historique" & Année & "" & Fs & ".xls") = "" Then 
?

ex pour savoir si un fichier existe
If Len(Dir("c:\Instructions.doc")) = 0 Then
   Msgbox "This file does NOT exist."
Else
   Msgbox "This file does exist."
End If
En mettent len sa ne change rien si le dossier Année"20xx" n'éxiste pas il le crée et crée le classeur excel "Fs"
mais si le dossier année éxiste il ne fait rien.
Merci , je n'ai pas les moyen de tester mes je croit qu'avec c'est bonne base que tu ma fourni je pourrai résoudre se problème.
J'ai une dernier question pour se sujet c'est :
-> comment je peut aller copier une feuil de mon classeur "A" vers mon classeur "Fournisseur"?

mais encore merci pour vos aide précieuse.

Bonjour
Tu n'as pas l'impression de (un peu) polluer le forum ???

- 4 Posts concernant une création d'un historique
- 3 Posts pour changer un séparateur de date
- 4 Posts pour savoir comment créer un dossier
- 2 Posts pour supprimer une ligne
- 2 Posts concernant une éventuelle gestion du code VBA

Le plus important c'est que j'ai vu des réponses à tes questions, avec des exemples de code en plus...

- Toujours pas de bonjour (c'est un classique)
- Le code que tu postes sur le forum (au bout de 17 messages) n'est toujours pas indenté avec les balises de code prévues.
etc.
etc.

Moi je dis: 'j'arrête la !!!'

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique

-> comment je peut aller copier une feuil de mon classeur "A" vers mon classeur "Fournisseur"?


L'enregistreur de macros.

P.S. Pour le reste, je fais la même chose qu'Acive.
Bonjour

Maintenant je tient a m'excuser si m'on comportement à agacé certains mes c'est la première fois que je suis sur se type de forum .
Si je ne mettez pas le code sous le format code c'était par non connaissance est non mauvaise volonté , si j'ai fais plusieurs poste pour un même sujet c'était simplement que j'essayait de répondre a vos réponse .

est oui c'est vrai il m'arrive d'oublier de dire bonjour mes se n'ai pas systématique .
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
Bien. Voilà un bon pas d'accompli.
Maintenant que tu as mieux compris le fonctionnement d'un forum technique, efforce-toi === >>
- de relire attentivement le règlement de ce forum
- de ne pas utiliser la messagerie privée pour demander de l'aide
- de présenter tes bouts de code indentés et entre balises code
- d'isoler et exposer, accompagnée de ton code tenté pour la résoudre, une seule difficulté technique, spécifique, parfaitement isolée et clairement exposée par discussion.
On ne traite pas un ensemble de difficultés, même si pour atteindre un seul but, mais UNE SEULE difficulté.
Il y en a deux d'exposées dans la présente discussion !
- de cliquer sur le tag "Réponse acceptée" au niveau d'une réponse ayant éventuellement permis de résoudre la difficulté. Cela permet de libérer le sujet.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
re bonjour
Voila une petit une idée :

Sub copie_feuille()
'Je copie "Archive" dans une nouvelle feuille avant "email"
Sheets("Archive").Copy Before:=Sheets("email")
'Je nomme la nouvelle feuille Archive + la date de la commande
ActiveSheet.Name = "Archive" & Date_C
End Sub

Déplacement de feuilles
La méthode VBA pour déplacer une feuille est la méthode Move.&#8232;Si la ou les feuilles déplacées ont des liaisons avec d'autres classeurs, les liaisons seront conservées.
sheets("Archive" & Date_C).Move Before:=workbooks(Fs).sheets(1) 'Déplacement dans un autre classeur  


Es que sa peut marcher ???

Sa doit copier une feuille immédiatement renommer la nouvelle feuille 3archive" + date de la commande puis déplacer cette nouvelle feuille dans le classeur "Fs".

P.S: on ma parler de "l'enregistreur de macro" si j'utilise cette méthode mon programme marchera sur tout les windows identique à celui de l'entreprise avec le même pack office ?
re bonjour je vient de voir que mon copier coller de mon idée a bugger est que sa a fait n'importe quoi voila le corriger:

Sub copie_feuille()
'Je copie "Archive" dans une nouvelle feuille avant "email" '
Sheets("Archive").Copy Before:=Sheets("email")
'Je nomme la nouvelle feuille Archive + la date de la commande'
ActiveSheet.Name = "Archive" & Date_C

'Déplacement de feuilles'

sheets("Archive" & Date_C).Move Before:=workbooks(Fs).sheets(1) 'Déplacement dans un autre classeur '
End Sub
Bonjour
Je m'excuse de revenir sur un sujet qui devrait étre clos mais mon code ne fonctionne pas.

Objectif code :
- Si Dossier\Année\ n'éxiste pas il le crée et crée "Fs".xls dans se répertoire.
- Si Dossier\Année\ éxiste :
Soit :
- "Fs".xls n'éxiste pas alors il le crée
Soit :
-"Fs".xls éxiste alors il y rajoute la nouvel feuille "Archive" & Date_C.

(Année est une variable,Fs est une variable qui correspond au Fournisseur sélectionner,Date_C est une variable qui correspond a la date de commande.)

Voila mon code ( seulement la partie qui correspond a l'archivage):

' -Sauvegarde la commande dans le dossier historique '

      Dim Chemin As String
      Dim CheminA As String
      Dim CheminB As String
      Chemin = "C:\Historique"
      Année = "2013"
      
      If Len(Dir("C:\Historique" & Année & "")) = 0 Then
  
        MkDir Chemin & Année
        CheminA = "C:\Historique" & Année & ""
        Application.ScreenUpdating = False
        Sheets("Archive").Copy
          With ActiveWorkbook
              .SaveAs Filename:=CheminA & Fs
              .Sheets("Archive").Name = "Archive" & "_" & Date_C
              .Close
          End With
      End If
    
      If Len(Dir("C:\Historique" & Année & "")) = 1 Then
        
            If ("C:\Historique" & Année & "" & Fs & ".xls") = 0 Then
              
               CheminB = "C:\Historique" & Année & ""
               Application.ScreenUpdating = False
               Sheets("Archive").Copy
                 With ActiveWorkbook
                     .SaveAs Filename:=CheminB & Fs
                     .Sheets("Archive").Name = "Archive" & "_" & Date_C
                     .Close
                 End With
                 
       ElseIf ("C:\Historique" & Année & "" & Fs & ".xls") = 1 Then
               
              Sheets("Archive").Copy
              ActiveSheet.Name = "Archive" & Date_C
              Sheets("Archive" & Date_C).Move.Workbooks (Fs)
               
       End If
               
      End If


Merci d'avoir pris le temps de me lire.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
Peux-tu nous dire à quoi a pu servir le code que je t'ai montré plus haut (pour traiter une partie des instructions que tu montres là) ?
A rien, apparemment.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Si tu utilises .Move, la feuille sera déplacée et non pas copiée.
Donc, elle n'existera plus dans le classeur original... est-ce bien ce que tu veux ?

Pour ce qui est des liaisons, si elles ne sont pas nécessaires, tu peux les rompre. De cette façon, quand tu ouvriras le classeur, celui-ci ne cherchera pas à se mettre à jour en recherchant les valeurs d'un autre classeur fermé... Le seul hic, les formules liées seront transformées en simples valeurs.


MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Bonjour ,

Si tu utilises .Move, la feuille sera déplacée et non pas copiée.
Donc, elle n'existera plus dans le classeur original... est-ce bien ce que tu veux ?Si tu utilises .Move, la feuille sera déplacée et non pas copiée.
Donc, elle n'existera plus dans le classeur original... est-ce bien ce que tu veux ?


Oui c'est se que je pensait faire car avec .copy sa ne copy pas dans le classeur que je veut sa crée un nouveau classeur est supprime l'ancien.

Peux-tu nous dire à quoi a pu servir le code que je t'ai montré plus haut (pour traiter une partie des instructions que tu montres là) ?
A rien, apparemment.Peux-tu nous dire à quoi a pu servir le code que je t'ai montré plus haut (pour traiter une partie des instructions que tu montres là) ?
A rien, apparemment.


Je suis sincérement désoler j'ai oublier de test se que tu m'avait donner comme je pensait avoir touver une autre solution (je n'ai pas la possibiliter de le test cher moi le soir car je suis sur mac) mais je vais imédiatement essayer ta méthode

et merci d'avoir pris le temps de me répondre.