Signaler

Création/nomination d'un dossier/fichier selon une variable

Posez votre question Cayl93 3Messages postés lundi 28 novembre 2016Date d'inscription 2 décembre 2016 Dernière intervention - Dernière réponse le 2 déc. 2016 à 22:48
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 
Utile
+0
moins plus
Bonjour,

3. Si oui, démasquer les onglets vises;
Tu le vises comment ?
Cayl93 3Messages postés lundi 28 novembre 2016Date d'inscription 2 décembre 2016 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! :)
Répondre
gbinforme 12885Messages postés lundi 18 octobre 2004Date d'inscription ContributeurStatut 3 décembre 2016 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.
Répondre
Cayl93 3Messages postés lundi 28 novembre 2016Date d'inscription 2 décembre 2016 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 ?
Répondre
gbinforme 12885Messages postés lundi 18 octobre 2004Date d'inscription ContributeurStatut 3 décembre 2016 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
Répondre
Ajouter un commentaire

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !