Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
884 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  archivage excel

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

archivage excel

n°1476607
michelexce​l
Posté le 16-11-2006 à 16:05:02  profilanswer
 

Bonjour à tous. Malgré mes nombreuses recherches je dois faire appel à vous.
J'ai 2 classeurs (A et B) Dans le classeur A j'ai deux feuilles (A et B). Comment proceder pour que je puisse envoyer une copie de la feuille A du classeur A dans le classeur B . Puis envoyer une copie de la feuille B dans le classeur B qui maintenant possede 2 feuilles. Le but est d'archiver des données.
Merci beaucoup pour votre aide

mood
Publicité
Posté le 16-11-2006 à 16:05:02  profilanswer
 

n°1476741
kiki29
Posté le 16-11-2006 à 17:45:11  profilanswer
 

via le macro recorder puis optimisation manuelle du code

n°1476780
michelexce​l
Posté le 16-11-2006 à 19:12:54  profilanswer
 

Merci pour la reponse mais ca ne fonctionne pas. Je vais poser mon probleme autrement. Mon but est que lorsque je fais une facture, qu'une copie de cette facture soit dirigée dans un autre classeur qui agit comme archive. Naturellement cela doit se faire automatiquement.
Voilà. Et il faut que la feuille de cette copie porte le numero de facture pour pouvoir y accéder si besoin.  
Et puis pouvoir procéder ainsi à chaque facture
Bonne fin de journée

n°1476851
michelexce​l
Posté le 16-11-2006 à 21:11:40  profilanswer
 

Bonjour,
"via le macro recorder "" ok j'ai compris ce que tu voulais dire et j'ai presque trouvé la solution. A chercher j'ai réussi à transférer les factures dans le classeur Archive. Il reste juste une chose et je n'ai pas réussi.  
Lorsque le transfert est effectué sur une nouvelle feuille dans Archive, comment faire pour que l'onglet porte le numero inscrit en A1 sur cette feille par exemple
Merci
Michel

n°1476873
kiki29
Posté le 16-11-2006 à 22:20:43  profilanswer
 

A tester et adapter


Option Explicit
 
Private Function AjoutFeuille(ByVal Nom As String) As Worksheet
Dim i As Integer
   
    Select Case Len(Nom)
        Case 0: GoTo Erreurs
        Case Is > 31: Nom = Left(Nom, 31)
    End Select
     
    For i = 1 To Len(Nom)
      Select Case Mid(Nom, i, 1)
          Case ":", "/", "\", "?", "*", "[", "]": Mid(Nom, i, 1) = "_"
      End Select
    Next
   
    On Error GoTo Erreurs
    Set AjoutFeuille = ThisWorkbook.Worksheets(Nom)
    Exit Function
   
Erreurs:
    Set AjoutFeuille = ThisWorkbook.Worksheets.Add
    If Len(Nom) > 0 Then AjoutFeuille.Name = Nom
End Function


Message édité par kiki29 le 17-11-2006 à 08:33:52
n°1476879
michelexce​l
Posté le 16-11-2006 à 22:33:58  profilanswer
 

Un gros merci pour ton aide, je l'apprécie beaucoup.  
Je vais le tester et t'en donnerai des nouvelles. Je vais en profiter pour en apprendre plus en étudiant cela en détail.
Encore une fois merci
Michel

n°1476949
kiki29
Posté le 17-11-2006 à 08:20:53  profilanswer
 


Option Explicit
 
Sub Tst()
Dim Sh As Worksheet
  AjoutFeuille "01/01/2006"
  AjoutFeuille "Azer:ty/Aze\rty?*[]"
  AjoutFeuille "Coucou"
  AjoutFeuille ""
  AjoutFeuille Sheets("Feuil1" ).Range("A1" )
   
  Set Sh = AjoutFeuille("et une de plus pour la route" )
  Sh.Cells(1, 1) = "et voilà"
End Sub


Message édité par kiki29 le 17-11-2006 à 08:37:58
n°1477519
michelexce​l
Posté le 17-11-2006 à 17:03:36  profilanswer
 

Bonjour.
La premiere formule hélas ne fonctionne pas mais je viens de lire la dernière et je vais tenter. Où j'en sui rendu présentement:
Je génère une facture
Je copie cette facture
Je vais dans mon classeur Archive (copier dans classeur fermé à venir)
J'ajoute une nouvelle feuille (insertion)
Et je colle la copie de la facture
Tout va très bien
Le numéro de fact (ex:23) est en A1.  
Je dois nommer l'onglet "23" et c'est ici que je suis bloqué.
J'ai tenté de plusieurs facons et aussi en utilisant le macro recorder mais rien.
Merci beaucoup de ton aide et bonne journée
Michel
 

n°1477648
michelexce​l
Posté le 17-11-2006 à 21:22:32  profilanswer
 

Bonjour
J'ai trouvé la formule pour renommer tous les onglets et pour un onglet alors adapter. J'ai trouvé ceci au travers de toutes mes recherches. S'il y en a qui veulent en profiter alors voici:
 
Si les noms sont en A1 de chaque feuille:
On Error Resume Next
For Each sht In ActiveWorkbook.Worksheets
Sheets(sht.Name).Name = Sheets(sht.Name).[A1]
Next
 
Bonne fin de journée
Michel

n°1477711
eric455
Posté le 18-11-2006 à 08:54:42  profilanswer
 

Bonjour le forum
Bonjour Kiki, Michel
 
Si je peux me permettre, je trouve que stocker des "feuilles" dans un autre fichier ne me parait pas être la meilleure solution, surtout si tu as plusieurs dizaines de factures => combien de feuilles !!!!! merci la recherche après.
J'avais trouvé une astuce, sur  un autre site, qui donnait la solution suivante : stocker toute une facture en ligne, cad 1 ligne = 1 facture, voir 2 lignes si tu as beaucoup de cellules à conserver, et tout ceci soit dans le même fichier que l'original de la facture ce qui est la meilleure solution, soit bien entendu dans un fichier "archive".
Si cela t'interresse, dépose ton fichier .
 
A+


---------------
Eric
mood
Publicité
Posté le 18-11-2006 à 08:54:42  profilanswer
 

n°1477957
michelexce​l
Posté le 18-11-2006 à 23:41:16  profilanswer
 

Bonsoir
Tu propose une piste intéressante. Je vais suivre ton conseil et de toute facon je t'en donnerai des nouvelles. Sinon je déposerai le fichier
Encore une fois merci
Michel

n°1478183
michelexce​l
Posté le 19-11-2006 à 20:20:31  profilanswer
 

Bonjour Erick455 et Kiki29. En fait le programme que je fais pour un ami qui a un commerce.  
 
Si je n'utilise pas un autre classeur pour les archives, alors tu ne crois pas que mon programme (qui est assez imposant) deviendrait surchargé par l'accumulation de toutes ces factures. Le nombre de feuilles serait élevé.  
 
C'est pourquoi j'ai pensé à un autre classeur pour l'archivage. Qu'en penses-tu? Y aurait-il un probleme à ne pas utiliser de classeur externe au niveau de la performance.  
 
Pour les codes j'ai tout essayé mais je ne trouve pas de solution:  
 
Quand je fais une facture, j'envoie une image de cette facture dans un autre classeur "Archives".  
 
Et là le problème: Quand l'image de la facture arrive dans ce classeur, ce classeur créé une nouvelle feuille pour recevoir l'image. Donc je ne peux pas définir le nom à l'avance.  
 
J'ai pratiquement tout tenté et aussi avec le macro recorder.  
Je te donne un exemple  
.--------  
Dim nom as string  
nom=sheets("feuil1" ).range("g2" ).text  ' g2 contenant le no facture  
sheets.add.name=nom  
.-----------  
Cette formule fontionne très bien sauf le ("feuil1" )
 
Mais le nom=sheets("feuil1" ) il faut qu'il devienne: nom=sheets("Mon Numéro de Facture" )  
 
Alors voila et à l'Aide !!!  
Merci beaucoup.


Message édité par michelexcel le 19-11-2006 à 20:27:15
n°1478192
kiki29
Posté le 19-11-2006 à 20:57:52  profilanswer
 

La suggestion d'eric455 m'apparait à priori excellente car cela reduirait la taille de l'archivage avec ,suivant le nb de factures,pourquoi pas une feuille annuelle ou mensuelle
D'autre part as-tu esayé qqch de bestial mais qui fonctionne :
ThisWorkbook.Sheets("Feuil1" ).Name = ThisWorkbook.Sheets("Feuil1" ).Range("A1" )
 
Ma proposition via une fonction était plus généraliste et evitait les erreurs possibles
 
Tu comprendras aisement qu'avec le peu de renseignements fournis il soit difficile de savoir ou se situe le(les) erreurs


Message édité par kiki29 le 19-11-2006 à 21:02:23
n°1478197
eric455
Posté le 19-11-2006 à 21:48:49  profilanswer
 

Bonsoir le forum
Bonsoir Kiki, Michel
 
Je ne voudrais surtout pas que Michel soit vexé par mon intervention. D’habitude je ne le fais pas, mais dans le cas présent, ce n’est pas son code qui est critiqué, mais j’apporte une solution que tu n’avais pas envisagée et donc  « demandée ».
 
Dans ton cas avec image : 1 image = 10Ko (~) par feuille, on peut avoir +. Si tu as 100, voir 500 factures, ouille ouille ouille le poids du fichier, et en plus j’ai un doute sur le nombre de feuilles max dans un fichier.
 
Dans mon cas, aucune image, 2 feuilles, et x lignes (x factures) sur la deuxième feuille, d’où  1 fichier pour 65535 factures,  ton ami peut faire des affaires. Et récupération (copie) sur la feuille 1 des anciennes factures….. Cétipabeaussa ? ? ? ? ?  
 
Voilà cqfd
 
Si tu veux, tu peux envoyer ton fichier « feuille facture » pour que l’on puisse concrétiser cela, soit par cjoint.com, ou yousendit.com, car je crois que l’on ne peut pas joindre de fichier sur ce site
 
A+
 
PS : je n’avais pas vu ta réponse Kiki, merci pour « excellente » j’aime bien …lol


---------------
Eric
n°1478564
michelexce​l
Posté le 20-11-2006 à 16:07:28  profilanswer
 

Bonjour eric455 et kiki29.
Merci à vous deux de prendre le temps de répondre. Eric sois rassuré je ne suis nullement vexé de ton intervention. Au contraire je constate l'entraide qui est super ici. Je dois partir au boulot. Je tente ta proposition Kiki ce soir.
 
Avant de quitter,je constate Eric qu'après tes explications je n'ai plus de crainte de tout mettre dans le même classeur.
 
Merci beaucoup à vous deux
Michel


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  archivage excel

 

Sujets relatifs
Archivageenvoyer un mail depuis excel via netscape mesenger
[Excel]ajouter le chiffre d'une autre cellule sur cette meme cellule ?Lien hypertexte d'une cellule Excel a partir de VBS
Vb.net -----> Excel problème!![Excel] Fusionner plusieurs feuilles de calculs du meme classeur
[résolu] Prendre un nom de fichier + répertoire en macro pour excel[Access, Excel] Recherche ouvrages/tutorial
Créer un petit programme pr archivage msn[VB] Extraire une ligne excel dans un autre tableau
Plus de sujets relatifs à : archivage excel


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR