Bonjour tout le monde,
J'ouvre cette nouvelle discussion pour obtenir des conseils sur la manière de réaliser mon projet VBA. Mon projet précédent m'a posé beaucoup de problèmes : http://www.developpez.net/forums/d14...e-each-sheets/
car je m'y étais mal pris. Mon projet reste presque le même (je n'ai cette fois-ci qu'une seule feuille à traiter) mais cette fois-ci je compte passer par le "bon" code. Je reprends donc tout à zéro !
Je souhaite que vous me dites si ce que je compte faire est correct.
Voici mon projet :
J'ai un classeur Excel qui contient une seule feuille. Cette feuille demande à l'utilisateur d'inscrire son nom, prénom, âge ... ATTENTION ce n'est pas un formulaire et cela ne le sera jamais !! J'insiste sur ce point, c'est une contrainte qu'on m'a fixé. C'est une feuille classique. L'utilisateur inscrit ce qu'on lui demande.
Mon objectif est de transférer les données inscrites par l'utilisateur dans un nouveau classeur (à créer dans le répertoire où se trouve le premier classeur) dans lequel on aura au final qu'une unique feuille intitulée data. Il faut que ce transfert soit ordonné sur une seule ligne (la seconde ligne). Je m'explique : le nom doit apparaitre en colonne A. Le prénom en B, la date de naissance en C ... Puis je dois enregistrer et fermer le classeur Excel.
Voici mon code par tranche (dites moi si c'est ok ou s'il y a mieux) :
1. Je copie les données présentes dans l'unique feuille de mon classeur d'origine
2. Je crée mon nouveau classeur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Dim WBfirst As Workbook Dim WBsecond As Workbook Set WBfirst = ActiveWorkbook WBfirst.Activate Cells.Copy
Je rencontre déjà trois problèmes : -le nouveau classeur est en lecture seule. - Le nouveau classeur n'est pas créé dans le répertoire que je souhaite. - Set WBsecond = ActiveWorkbook ne déclare pas mon nouveau classeur comme le activeworkbook. Il prend mon ancien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 'On crée l'objet Excel Set xlApp = CreateObject("Excel.Application") 'Nombre de feuilles xlApp.SheetsInNewWorkbook = 1 'Ajout du classeur Set xlBook = xlApp.Workbooks.Add 'On donne un nom au classeur xlBook.SaveAs ("Nouveau.xls") Set WBsecond = ActiveWorkbook WBsecond.Activate
3. Je crée ma feuille data. Je colle mes données dans la feuille 1 de mon nouveau classeur
4. Je copie/colle correctement mes données de manière ordonnée dans ma feuille data :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 'Je me place sur la feuille créée dans mon nouveau classeur. J'y colle ma feuille de base. sheets("Feuil1").select Cells.PasteSpecial ' Je crée ma feuille data dans laquelle je souhaite agencer correctement les données. Set sh = Sheets.Add sh.Name = "data"
5. Je supprime ma feuille intitulée "Feuil1" pour ne conserver que la feuille data.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Sheets("data").Select [E2].Value = Worksheets("Feuil1").[G14].Value [M2].Value = Worksheets("Feuil1").[F17].Value [O2].Value = Worksheets("Feuil1").[C32].Value [P2].Value = Worksheets("Feuil1").[C41].Value [N2].Value = Worksheets("Feuil1").[C49].Value
6. J'enregistre et je quitte : code pas encore développé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Sheets("Feuil1").delete
Mon code ne fonctionnant pas dès l'étape 2 correctement, je ne peux pas continuer.
Pouvez vous m'aider dans mon travail ?
Merci d'avance pour votre aide !!!!
Partager