IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

for each dossier


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 271
    Par défaut for each dossier
    bjr, je cherche votre aides S.V.P.
    j'ai developpé une macro dont le but est de " enregistrer sous":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Sub enregistrer_sous()
    Application.ScreenUpdating = False
    Dim sh As Worksheet
    If [P18] <> "" And [O18] <> "" Then
    ActiveWorkbook.Save
    Application.DisplayAlerts = False 'éviter de devoir confirmer manuellement la suppression de chaque feuille
    For Each sh In ThisWorkbook.Sheets
        If sh.Name = "RECAP" Then sh.Delete
    Next
    Application.DisplayAlerts = True
        ChDir _
            "C:\PV"
        ActiveWorkbook.SaveAs Filename:= _
            "C:\PV\" & [P18].Value & Right(Sheets("courbes GI").Range("o18").Value, 2) & Left(Sheets("courbes GI").Range("o18").Value, 4) _
            , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
    End If
    Application.ScreenUpdating = True
    End Sub
    ma question est la suivante:
    sachant que le dossier "c:\PV" contient plusieurs sous-dossier .
    comment je peux "enregistrer sous" dans un sous-dossier de "C:\PV" dont le nom est le contenu de la cellule [P18].
    merci d'avance.

  2. #2
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Salut

    Utilise l'instruction MkDir pour créer un nouveau dossier puis tu peux enregistrer dedans. De plus tu dois utiliser un objet Range pour accéder à la valeur de la cellule. J'ai fait un petit exemple en utilisant l'objet ThisWorkbook... que tu peux adapter en utilisant ActiveWorkbook à la place.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub toto()
        Dim nomFichier As String, nomDossier As String
        nomFichier = Feuil1.Range("B2").Value
        nomDossier = Feuil1.Range("A2").Value
        MkDir "C:\PV\" & nomDossier
        ThisWorkbook.SaveAs "C:\PV\" & nomDossier & "\" & nomFichier & ".xls"
    End Sub
    Je ne me suis pas trop cassé la tête avec le nom du fichier que j'ai placé une cellule à côté du nom du fichier. N'oublies pas de mettre un "\" entre le nom du dossier et le nom du fichier, sinon, ça ne marchera pas.

  3. #3
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 271
    Par défaut
    merci zazaraignée
    le prob c'est que les dossiers sont déjà créés comme le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    C:\PV   ..................... le dossier père
           -PV A
           -PV B                  les sous-dossiers   
           -PV C
    ce que je veux c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "enregistrer-sous" dans le sous-dossier où le nom est "PV" & [P18]
    merci d'avance

  4. #4
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Ha! Ouais! Je m'disais aussi...

    Alors t'as regardé de ce côté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ActiveWorkbook.SaveAs Filename:= _
            "C:\PV\" & [P18].Value & Right(Sheets("courbes GI").Range("o18").Value, 2) & Left(Sheets("courbes GI").Range("o18").Value, 4) _
            , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
    il me semble que [P18].Value fait référence à une cellule.
    T'as essayé avec Range("P18").Value & "\" pour voir si ça marche ?

  5. #5
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 271
    Par défaut
    pour faciliter le prob
    est ce que vous pouvez me convertir la phrase suivante en VBA:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for each dossier in "c:\PV"
     if dossier.name=range("p18").value
     ouvrir le dossier
     ActiveWorkbook.SaveAs Filename:= "C:\PV\dossier\" & [P18].Value & Right(Sheets("courbes GI").Range("o18").Value, 2) & Left(Sheets("courbes GI").Range("o18").Value, 4) _
            , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
     end if
    next
    merci bcp.

  6. #6
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ActiveWorkbook.SaveAs Filename:= "C:\PV\dossier\" & _
     	Range("P18").Value & "\" _    ' <-- correction ici
     	Right(Sheets("courbes GI").Range("o18").Value, 2) & _
     	Left(Sheets("courbes GI").Range("o18").Value, 4) _
            , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 15/09/2010, 01h58
  2. xsl:for-each avec un parametre pour select
    Par arnog dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 26/08/2008, 13h09
  3. apply-templates et for-each
    Par d'Oursse dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 14/05/2004, 08h38
  4. utilisation de for each
    Par billoum dans le forum ASP
    Réponses: 5
    Dernier message: 19/03/2004, 15h30
  5. [VB6] For Each ... In ...
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 03/02/2003, 12h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo