Création/nomination d'un dossier/fichier selon une variable [Résolu/Fermé]

Cayl93 6 Messages postés lundi 28 novembre 2016Date d'inscription 11 janvier 2017 Dernière intervention - 28 nov. 2016 à 23:03 - Dernière réponse : Cayl93 6 Messages postés lundi 28 novembre 2016Date d'inscription 11 janvier 2017 Dernière intervention
- 5 déc. 2016 à 17:32
Bonjour à tous!

Je commence à apprendre le VBA afin de créer des applications pour mon travail et présentement, je suis coincé:

Dans une feuille, je souhaite lorsqu'on fait un double clique sur une case de la colonne G et qu'il y a le mot «Faire» dans celle-ci, que plusieurs onglets masqués du classeur soient enregistrer dans un nouveau classeur dans un nouveau dossier et que le nom du nouveau classeur et du nouveau dossier soit définit par la valeur de la cellule sur la même ligne mais dans la colonne C.

Je ne sais pas si je suis claire?
Voici en étape ce que je voudrais faire:
1. Double clique sur une case;
2. Vérifier si le mot «Faire» est dans la cellule;
3. Si oui, démasquer les onglets vises;
4. Copier les onglets démasqués;
5. Créer le nouveau dossier et le nommer selon la case C de la même ligne;
6. Créer le nouveau classeur et le nommer selon la case C de la même ligne;
7. Masquer les onglets démasqués.

Merci à l'avance! :)
Afficher la suite 

6 réponses

gbinforme 14442 Messages postés lundi 18 octobre 2004Date d'inscriptionContributeurStatut 16 décembre 2017 Dernière intervention - 1 déc. 2016 à 21:47
+1
Utile
5
Bonjour,

3. Si oui, démasquer les onglets vises;
Tu le vises comment ?
Cette réponse vous a-t-elle aidé ?  
Cayl93 6 Messages postés lundi 28 novembre 2016Date d'inscription 11 janvier 2017 Dernière intervention - 1 déc. 2016 à 22:39
L'onglet visé est celui qui possède le même nom que la valeur de la première ligne de la colonne.

Avec mes recherches sur internet, j'ai pu faire ça:

Sub CreationDC()
Dim Cal As Worksheet
Dim NC As String
Dim NI As String
Dim Sexe As String
Set Cal = Worksheets("Calendrier")
Sexe = Cells(ActiveCell.Row, 3).Value
NC = Cells(ActiveCell.Row, 4).Value
NI = Cells(ActiveCell.Row, 1).Value
If Dir("H:\Dossiers Intégra\" & NC, vbDirectory) = "" Then
For Each FM In Array("PV", "LP1", "P", "Comm", "LFSC.", "LFACSP.", "LFAC1", _
"LFAC2", "Final", "RF", "RP", "FT")
Sheets(FM).Visible = True
Next FM
Sheets(Array("PV", "LP1", "P", "Comm", "LFSC.", "LFACSP.", "LFAC1", _
"LFAC2", "Final", "RF", "RP", "FT").Copy
MkDir "H:\DI\" & NC
ChDir "H:\DI\" & NC
ActiveWorkbook.SaveAs filename:=NC, FileFormat:=xlOpenXMLWorkbookMacroEnabled
Sheets("LP1").Visible = False
Sheets("LP2").Visible = False
Sheets("Projet").Visible = False
Sheets("Comm").Visible = False
Sheets("LFSC").Visible = False
Sheets("LFACSP").Visible = False
Sheets("LFAC1").Visible = False
Sheets("LFAC2").Visible = False
Sheets("Final").Visible = False
Sheets("RF").Visible = False
Sheets("RP").Visible = False
Sheets("FT").Visible = False
Sheets("PV").Range("C1").Value = NC
Sheets("PV").Range("C3").Value = NI
Cal.Activate
For Each FM In ArrayArray("PV", "LP1", "P", "Comm", "LFSC.", "LFACSP.", "LFAC1", _
"LFAC2", "Final", "RF", "RP", "FT")
Sheets(FM).Visible = False
Next FM
Workbooks(NC & ".xlsm").Activate
ActiveSheet.Range("D2").Value = Sexe
End If
End Sub

À date ça semble marcher, bien que je crois que je pourrais le rendre plus propre... Ou si tu as une autre idée, je suis preneur! :)
gbinforme 14442 Messages postés lundi 18 octobre 2004Date d'inscriptionContributeurStatut 16 décembre 2017 Dernière intervention - 1 déc. 2016 à 23:02
Bonsoir,
Si cela fonctionne c'est parfait car sans le classeur c'est difficile d'améliorer.
Cependant ta liste "Sheets("LP1").Visible = False ...Sheets("FT").Visible = False"
parait inutile car tu refais de même dans ta boucle suivante.
Cayl93 6 Messages postés lundi 28 novembre 2016Date d'inscription 11 janvier 2017 Dernière intervention - 2 déc. 2016 à 16:47
Ses deux boucles sont dans deux classeurs différents, voilà pourquoi j'ai besoin de la répéter, et dans le premier classeur, je dois conserver la feuille PV visible. Donc les deux boucles ne peuvent pas être identique.

Par contre, tu pourrais peut-être répondre `cette question:
Pourquoi Est-ce que pour ma dite liste ne fonctionne pas avec la méthode
Sheets(Array("LP", ..., "FT")).Visible = False ?
gbinforme 14442 Messages postés lundi 18 octobre 2004Date d'inscriptionContributeurStatut 16 décembre 2017 Dernière intervention - 2 déc. 2016 à 22:48
Bonsoir,
Pour qu'elle fonctionne il faut qu'il reste une feuille visible sinon elle ne peut s'exécuter. Ceci doit fonctionner :
Sheets(Array("LP1", "LP2", "Projet", "Comm", "LFSC", "LFACSP", "LFAC1", "LFAC2", "Final", "RF")).Visible = False
Sheets("PV").Range("C1").Value = NC
Cayl93 6 Messages postés lundi 28 novembre 2016Date d'inscription 11 janvier 2017 Dernière intervention - 5 déc. 2016 à 17:32
Merci beaucoup!!