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 :

pb macro creer des repertoires automatiquement


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Novembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Novembre 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut pb macro creer des repertoires automatiquement
    bonjour a tous
    j'ai un petit souci concernant une macro ppur generer des repertoires automatiquement
    en fait je souhaiterait mettre des valeurs "date" dans la colonne A mais le prog me renvoi une erreur macro 76
    merci de m'indiquer ce que je peut modifier pour que je puisse mettre des valeurs'date" (style 10-janv-2015) dans la colonne A
    merci de votre aide

    fichier en piece jointe

    MERCI
    aucun avatar Maxbruver
    Nouveau venu
    Nouveau venu

    Messages: 2
    Inscription: Hier, 23:23
    Version Excel: 2013

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je ne comprends pas tout mais en ce qui concerne ceci
    merci de m'indiquer ce que je peut modifier pour que je puisse mettre des valeurs'date" (style 10-janv-2015) dans la colonne A
    Une simple personnalisation du format de la cellule est suffisant (Clic droit format cellule, choisir dans l'onglet [Nombre] - Personnalisé. Le format est "jj-mmm-aaaa".
    Il est possible également de transformer une date se trouvant dans une autre cellule par son texte formaté
    Exemple à l'aide de cette formule avec la date en A2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =TEXTE(A2;"jj-mmm-aaaa")
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Novembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Novembre 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    merci de ta reponse mais en fait je souhaite que ma macro puisse creer des repertoires de la colonne A dont le nom est une date...d'apres la macro suivante le format date me renvoi une erreur si le format de la cellule est une date.je ne comprend pas pourquoi

    merci
    voici la macro
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     
    Option Explicit
     
     
    Sub créer()
        Dim x, i&, a&, verif$, n&, cpt&, t$ 'déclaration des variables dont on a besoin dans la macro
        t = Timer
        Feuil2.Cells.Clear 'là je vide l'intégralité de la feuille Feuil2
        Feuil2.Cells(1, 1) = "Dossiers Générés"  'là je nomme la cellule de la feuille feuil2 A1 Dossiers générés
        With Feuil1 'là je dis avec la feuille feuil1  pour éviter de réécrire dans toutes les lignes en dessous feuil1.etc etc
            For i = 6 To Feuil1.Range("R" & Rows.Count).End(xlUp).Row 'définition des cellules à traiter de la ligne 6 à la dernière ligne remplie
            'donc de ta colonne R en partant de R dernière ligne et en remontant
                x = Split(.Cells(i, 18), "\") 'là je décompose la cellule pour tester la validité des dossiers  donc en mettant x=split(.Cells(i,18)
                'je décompose dans un tableau virtuel toutes les parties du nom contenu dans la cellule colonne 18 ligne i.
                For a = 0 To UBound(x) 'là je vais maintenant tester si les dossiers existent bien déjà pour le chemin contenu dans cette cellule
                    If verif = "" Then verif = x(a) 'là il faut bien commencer par une valeur alors je dsi si la valeur de ma variable verif= rien alors je lui
                    'donne la veleur de mon tableau x(a) donc la valeur de x(0) puisque a sera égal de 0 à la fin du tableau x ubound signifiant la fin du tableau
                    If Dir(verif, vbDirectory) <> "" Then ' là je commence à vérifier et je dis si la direction de vérif est différent de "" donc rien
                    'donc encore si il existe, Alors si le dossier donc existe je vais au point 3 si il n'exisyte pas je vais au point 33
                        'MsgBox "Le dossier " & verif & " Existe déjà", , "Le fichier existe déjà!"
                        verif = verif & "\" & x(a + 1) '3)  là je redonne une nouvelle valeur à verif en ajoutant le deuxième élément de mon tableau x
                        'donc en gros si le premier test était  verif= C:\ là je rajoute  un antislasch "\"  et la valeur de x(a+1) donc x(0+1)
                    Else
                        MkDir (verif) '33) là je craie le dossier avec la valeur verif
                        Feuil2.Range("A" & Feuil2.Range("A" & Rows.Count).End(xlUp).Row + 1) = verif: cpt = cpt + 1 'là je recopie le nom du dossier
                        'généré à la dernière ligne vide de la colonne A de la feuille2
                        verif = verif & "\" & x(a + 1) 'là je donne à ma variable verif la nouvelle valeur que je dois vérifier
                    End If
                    If a = UBound(x) - 1 Then GoTo 1 'là je contrôle la valeur de ma variable a car comme j'ajoute des valeurs en point 3 et après le point 33
                    'maboucle doit donc s'arrêter à la fin de mon tableau x -1
                Next a 'là c'est fini pour ma première vérification donc je continue ma boucle avec la prochaine valeur de a
    1           verif = "" ' là avant de commencer une prochaine cellule R je remet la valeur de verif à vide
            Next i
            'voilà déjà pour la vérification des adresses et la création si inexistant des dossiers
            'déjà essaye de cpomprendre un peu le dessus et tu me rediras quoi à Plus  Papou
            For i = 6 To Feuil1.Range("A" & Rows.Count).End(xlUp).Row
                verif = .Cells(i, 18)
                If Dir(verif & .Cells(i, 1), vbDirectory) = "" Then
                    MkDir (verif & .Cells(i, 1))
                    Feuil2.Range("A" & Feuil2.Range("A" & Rows.Count).End(xlUp).Row + 1) = verif & .Cells(i, 1): cpt = cpt + 1
                Else
                    'MsgBox "Le dossier " & verif & .Cells(i, 1)& " Existe déjà", , "Le fichier existe déjà!"
                End If
            Next i
            For i = 6 To Feuil1.Range("A" & Rows.Count).End(xlUp).Row
                For a = 20 To 22
                    If Dir(verif & .Cells(i, 1) & "\" & .Cells(i, a), vbDirectory) = "" Then
                        MkDir (verif & .Cells(i, 1) & "\" & .Cells(i, a))
                        Feuil2.Range("A" & Feuil2.Range("A" & Rows.Count).End(xlUp).Row + 1) = verif & .Cells(i, 1) & "\" & .Cells(i, a)
                         cpt = cpt + 1
                    Else
                        'MsgBox "Le dossier " & verif & .Cells(i, 1) & "\" & .Cells(i, a) & " Existe déjà", , "Le fichier existe déjà!"
                    End If
                Next a
            Next i
            For i = 6 To Feuil1.Range("A" & Rows.Count).End(xlUp).Row
                verif = .Cells(i, 18) & .Cells(i, 1) & "\"
                For a = 20 To 22
                    For n = 24 To 26
                        If Dir(verif & .Cells(i, a) & "\" & .Cells(i, n), vbDirectory) = "" Then
                            MkDir (verif & .Cells(i, a) & "\" & .Cells(i, n))
                            Feuil2.Range("A" & Feuil2.Range("A" & Rows.Count).End(xlUp).Row + 1) = verif & .Cells(i, a) & "\" & .Cells(i, n)
                             cpt = cpt + 1
                        Else
                            'MsgBox "Le dossier " & verif & .Cells(i, a) & "\" & .Cells(i, n) & " Existe déjà", , "Le fichier existe déjà!"
                        End If
                    Next n
                Next a
            Next i
        End With
        Feuil2.Select
        Feuil2.Range("A" & Feuil2.Range("A" & Rows.Count).End(xlUp).Row + 1) = "Vous avez Généré " & cpt & " Dossiers"
        MsgBox "Voilà c'est fait" & vbCrLf & _
        "Vous avez Généré " & cpt & " Dossiers en " & Format(Timer - t, "0.00 s"), , "Création Terminée"
    End Sub

  4. #4
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, à lire : Manipulation des fichiers en VBA

    ainsi que la validité des noms de dossiers
    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
    Private Function NomDossierValide(sChaine As String) As Boolean
    Dim i As Long
    Const CaracInterdits As String = """*/:<>?[\]|"
        NomDossierValide = True
        If Len(sChaine) = 0 Then
            NomDossierValide = False
            Exit Function
        End If
        For i = 1 To Len(CaracInterdits)
            If InStr(sChaine, Mid$(CaracInterdits, i, 1)) > 0 Then
                NomDossierValide = False
                Exit Function
            End If
        Next i
    End Function

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Tu n'indiques pas quelle erreur (son numéro et le texte l'accompagnqnat), ni la ligne où cela se produit
    Une date est un nombre formaté donc il faut transformer sa valeur par une chaîne de caractères à l'aide d'une fonction de formatage comme je l'ai indiqué dans ma première réponse. En VBA c'est la fonction Format.
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Format(date,"dd-mmm-yyyy")
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maVariable = Format(date,"dd-mmm-yyyy")
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Novembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Novembre 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    voici l'erreur qui se produit
    erreur d'execution 76
    chemin d'acces introuvable
    ligne 38

    merci de ton aide

  7. #7
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonsoir,

    Déjà, contrôle si ton chemin correspond à ce qu'il devrait être avec un MsgBox ou un Debug.Print ou au survol de la souris en mode débogage et attention avec les dates car avec Value, Excel peut te retourner un long alors que dans la cellule le formatage est ce que tu désire donc, peut être obliger la récup de cette façon avec la propriété Text de la cellule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    verif = .Cells(i, 18).Text
    If Dir(verif & .Cells(i, 1).Text, vbDirectory) = "" Then
    Hervé.

Discussions similaires

  1. [XL-2010] Erreur automation pour une macro envoyant des mails automatiquement
    Par MamZelle Coco dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 18/03/2014, 14h22
  2. [XL-2010] creer des graphiques automatiquements
    Par Marc31 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 13/03/2013, 12h41
  3. Réponses: 0
    Dernier message: 07/10/2012, 19h56
  4. Réponses: 5
    Dernier message: 24/01/2006, 01h16
  5. [C++] Creer des repertoires de facon recursive
    Par barthelv dans le forum Windows
    Réponses: 2
    Dernier message: 25/04/2005, 15h12

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