Excel > duppliquer et renommer onglet à partir d'une liste [résolu]

Excel > duppliquer et renommer onglet à partir d'une liste [résolu] - VB/VBA/VBS - Programmation

Marsh Posté le 29-09-2005 à 11:47:17    

Bonjour,
 
Je souhaite faire un questionnaire que je vais envoyer en pièce jointe par mail.
 
J'ai un onglet avec la liste des personnes "nom : liste utilisateur"
colonne 1 = utilisateur01---utilisateur75
colonne 2 = mail
colonne 3 = nom + prénom
 
J'ai le questionnaire sur un onglet "nom : utilisateur FR"
J'ai le même questionnaire traduit en anglais 'nom : utilisateur GB"
 
Je voudrais créer une macro me permettant de copier les onglet utilisateur FR et utilisateur GB dans un nouveau fichier excel qui serait enregistré dans un dossier précis sur mon pc.
 
Le fichier et les onglets devraient etre renommé :
fichier : nom prénom.xls soit (colonne 3) de l'onglet liste utilisateur
utilisateur FR = nom prénom FR
utilisateur GB = nom prénom GB
 
 
 
pour le moment je me suis occupé de tester ma macro sur l'onglet FR en tentant de le dupliquer et le renommer ! mais j'échoue !
 
 
 
 
 
voilà ce que j'ai fait :
 
Sub CreationOnglettest()
 
ActiveCell.CurrentRegion.Select
Dim tableau() As String
ReDim tableau(1 To ActiveCell.CurrentRegion.Count)
 
For ctr = 1 To ActiveCell.CurrentRegion.Count
tableau(ctr) = ActiveCell.CurrentRegion(ctr)
Next
 
For I = 1 To ActiveCell.CurrentRegion.Count
Sheets(Array("Utilisateur FR" )).Select
Sheets("Utilisateur FR" ).Activate
Sheets(Array("Utilisateur FR" )).Copy.Name = tableau(ctr)
Next
'
End Sub
 
 
 
est ce que vous pourriez me dire pourquoi ca ne marche pas ! et m'aider à finir


Message édité par kancele le 05-10-2005 à 14:07:49
Reply

Marsh Posté le 29-09-2005 à 11:47:17   

Reply

Marsh Posté le 29-09-2005 à 14:57:19    

je n'ai pas compris ce que tu veux faire avec utilisateur FR et GB
laquelle des deux tu copies ?
en attendant voici le code de crétion des fichier excel par uilisateur
Dim Source
Dim Cible
Dim Cll As Range
 
     
Source = ActiveWorkbook.Name
For Each Cll In Range("A1:" & Range("A65536" ).End(xlUp).Address)
 
    Workbooks.Add
    ChDir "c:\temp"
    ActiveWorkbook.SaveAs Filename:=Workbooks(Source).Sheets("liste utilisateur" ).Cells(Cll.Row, 3).Value
    Cible = ActiveWorkbook.Name
    Workbooks(Cible).ActiveSheet.Name = Workbooks(Source).Sheets("liste utilisateur" ).Cells(Cll.Row, 1).Value
 
Next

Reply

Marsh Posté le 29-09-2005 à 16:48:34    

Salut Kancele,
 
J'ai regardé un peu ton probleme, donc voila un tit bout de macro qui devrait faire ce que tu veux (copier les 2 onglets dans un seul fichier excel, renomer les onglets et enregistrer le fichier avec le nom utilisateur en colone C, fermer le fichier, et continuer sur toute ta liste)
 

Code :
  1. Sub fichiers()
  2.      'Définition des variables
  3.      Dim Source As Workbook
  4.      'mets ton nom de fichier à la place de questionaire
  5.      Set Source = Workbooks("Questionaire.xls" )
  6.      Dim Nom, Ligne
  7.      Ligne = 2
  8.      'j'ai considéré que ta liste était en feuille n°1 dans la colone C avec
  9.      'en première ligne l'intitulé, et les noms ensuite sans aucun "blancs"
  10.      Nom = Source.Sheets(1).Cells(Ligne, 3).Value
  11.      'la boucle sur la liste
  12.      Do
  13.           'copier/coller des onglet dans un nouveau classeur
  14.           Source.Activate
  15.           'ici à la place de "FR" et "GB" tu mets tes noms d'onglets
  16.           Sheets(Array("FR", "GB" )).Select
  17.           Sheets("GB" ).Activate
  18.           Sheets(Array("FR", "GB" )).Copy
  19.           Application.CutCopyMode = False
  20.           'modification des noms d'onglets, sauvegarde et fermeture
  21.           With ActiveWorkbook
  22.                .Sheets(1).Name = Nom & " FR"
  23.                .Sheets(2).Name = Nom & " GB"
  24.                'Au lieu de "C:\" tu mets ton chemin
  25.                .SaveAs Filename:="C:\" & Nom & ".xls"
  26.                .Close
  27.           End With
  28.           'mise en place pour la ligne suivante
  29.           Ligne = Ligne + 1
  30.           Nom = Source.Sheets(1).Cells(Ligne, 3).Value
  31.      Loop Until Nom = ""     'La boucle s'arrette si le nom est vide
  32. End Sub


 
En ce qui concerne ta macro j'ai pas trop regardé, je suis pas douée sur les macros des autres. un autre que moi t'aidera surement à comprendre ce qui colle pas dedans, mais je crois qu'il faudrait au moins que tu dise ou elle bloque et le message que te donne excel.
 
bon courage et tiens nous au courant :)


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 03-10-2005 à 11:39:50    

super merci !  
 
ca marche comme ça.
en fait j'ai pas d'erreur excel, elle ne fait que dupliquer les onglets, et ne les renomme pas !  
 

Reply

Marsh Posté le 03-10-2005 à 14:43:18    

Salut kancele,
 
le fait que les onglets ne se renomenaient pas vennait de ta ligne :

Code :
  1. Sheets(Array("Utilisateur FR" )).Copy.Name = tableau(ctr)


avec la copy tu peux définir la position de la feuille (before/after). mais pour changer son nom il faut le faire en un 2ème temps.

Code :
  1. Sheets(Array("Utilisateur FR" )).Copy
  2. ActiveSheet.Name = tableau(ctr)


Sinon si la macro marche tant mieux. :bounce:  
Marque résolu dans le sujet du premier post ça pourra peut-être en aider d'autres  ;)


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 05-10-2005 à 14:08:00    

done

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed