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

Résolu
Cayl93 Messages postés 6 Statut Membre -  
Cayl93 Messages postés 6 Statut Membre -
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! :)

1 réponse

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    Bonjour,

    3. Si oui, démasquer les onglets vises;
    Tu le vises comment ?
    1
    1. Cayl93 Messages postés 6 Statut Membre
       
      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! :)
      0
    2. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      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.
      0
    3. Cayl93 Messages postés 6 Statut Membre
       
      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 ?
      0
    4. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      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
      
      0
    5. Cayl93 Messages postés 6 Statut Membre
       
      Merci beaucoup!!
      0