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 :

nom de fichier en variable


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Gestionnaire Bases de données
    Inscrit en
    Août 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Gestionnaire Bases de données

    Informations forums :
    Inscription : Août 2014
    Messages : 17
    Par défaut nom de fichier en variable
    Bonjour à tous,

    je bloque sur l'enregistrement de fichier alors que tout allait bien jusqu'à présent.

    le nom de mon fichier est stocké dans une variable et je ne parviens pas à faire un saveas en .csv....


    '
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim nomfichier As String
    nomfichier = nom_dr & ".csv"
    '
        Selection.Copy
        Workbooks.Add
        ActiveSheet.Paste
        Application.CutCopyMode = False
        ChDir "C:\Users\Public\Documents\MAJ TLC 2007"
        ActiveWorkbook.SaveAs Filename:="C:\Users\Public\Documents\MAJ TLC 2007\" & nomfichier, FileFormat:=xlCSV, _
            CreateBackup:=False
    End Sub
    si quelqu'un pouvait m'aider je lui en serais particulièrement reconnaissant

    merci encore

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Bonjour,

    Quelle erreur obtiens tu?
    Que vaut nomfichier au moment de l'erreur?
    Si tu remplace nomfichier par sa valeur as tu toujours le probème?

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Quel est la valeur de nom_dr en mode debug ?

    Où et comment, d'ailleurs, cette variable a-t-elle été déclarée et initialisée ?

  4. #4
    Membre confirmé Avatar de fuine0069
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Juillet 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2017
    Messages : 33
    Par défaut
    Il est effectivement clair que l'erreur vient du fait que nom_dr n'est pas défini plus haut,
    Ton nomfichier ne peut donc avoir de définition claire.

  5. #5
    Membre averti
    Homme Profil pro
    Gestionnaire Bases de données
    Inscrit en
    Août 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Gestionnaire Bases de données

    Informations forums :
    Inscription : Août 2014
    Messages : 17
    Par défaut
    Citation Envoyé par fuine0069 Voir le message
    Il est effectivement clair que l'erreur vient du fait que nom_dr n'est pas défini plus haut,
    Ton nomfichier ne peut donc avoir de définition claire.
    Si si excusez-moi, nom_dr est bien initialisé j'ai juste oublié de le coller car ce n'est que la partie finale de ma proc.

    En fait, j'ai une liste de villes pour lesquelles je dois créer un fichier.
    nom_dr récupère la valeur active de la liste.
    si je mets ActiveWorkbook.SaveAs Filename:="C:\Users\Public\Documents\MAJ TLC 2007\Amiens.csv" cela fonctionne.
    si c'est la variable non.

    En macro excel 4 : = ENREGISTRER.SOUS?(nom_dr;;;; marchait parfaitement
    Erreur 1004 mais je n'ai pas trouvé la solution....

    je vous mets le code complet :
    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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    Sub Mise_en_forme()
    '
    ' Mise_en_forme Macro
    '
        'définition des variables
        Dim nblignes As Integer
        Dim lig_dr As Integer
        Dim nom_dr As String
        Dim rep_trav As String
        Dim rep As String
     
     
        'désactive les opérations à l'écran
        Application.ScreenUpdating = False
     
        'sélectionne la cellule A1
        Range("a1").Select
        'Calcule le nombre de lignes
        Do While Not (IsEmpty(ActiveCell))
            nblignes = nblignes + 1
            Selection.Offset(1, 0).Select
        Loop
     
        'Sélectionne les deux premières colonnes
        Columns("A:B").Select
        'insère deux colonnes en début de fichier
        Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
        'se place en A2
        Range("A2").Select
        'affiche le libellé de la DR
        ActiveCell.FormulaR1C1 = "=VLOOKUP(LEFT(RC[2],3),DR,2)"
        'se place en b2
        Range("B2").Select
        'affiche le mercure seul
        ActiveCell.FormulaR1C1 = "=VALUE(RIGHT(RC[1],LEN(RC[1])-3))"
        'sélectionne les cellules a2 et b2
        Range("A2:B2").Select
        'recopie incrémentée jusqu'à la fin de fichier
        Selection.AutoFill Destination:=Range("A2:B" & nblignes)
        'sélectionne la plage de cellules recopiées
        Range("A2:B" & nblignes).Select
        'effectue un copier/collage spécial valeurs en b2
        Selection.Copy
        Range("B2").Select
        ActiveSheet.PasteSpecial Format:=3, Link:=1, DisplayAsIcon:=False, _
            IconFileName:=False
        'supprime la colonne a
        Columns("A:A").Select
        Selection.Delete Shift:=xlToLeft
        'met le texte "Base" en a1
        Range("A1").Select
        ActiveCell.FormulaR1C1 = "Base"
        ActiveWorkbook.Worksheets("Fichier").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Fichier").Sort.SortFields.Add Key:=Range( _
            "A2:A" & nblignes), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortNormal
        With ActiveWorkbook.Worksheets("Fichier").Sort
            .SetRange Range("A1:D" & nblignes)
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
        Range("A2").Select
        'réactive les opérations à l'écran
        Application.ScreenUpdating = True
     
        'sélectionne la cellule A2
        Range("a2").Select
        nom_dr = ActiveCell.Value
        lig_dr = ActiveCell.Row
     
        'travaille jusqu'à la fin de fichier
        Do While Not (IsEmpty(ActiveCell))
            'tant que le nom de la DR est celui de la celluel active
            Do While ActiveCell.Value = nom_dr
             lig_dr = lig_dr + 1
             Selection.Offset(1, 0).Select
            Loop
            Range("B1:D" & lig_dr - 1).Select
            'Exit Sub
            Range("a2").Select
            nom_dr = ActiveCell.Value
            nomfichier = nom_dr & ".csv"
     
            Selection.Copy
            Workbooks.Add
            ActiveSheet.Paste
            Application.CutCopyMode = False
            ChDir "C:\Users\Public\Documents\MAJ TLC 2007"
            ActiveWorkbook.SaveAs Filename:="C:\Users\Public\Documents\MAJ TLC 2007\" & nomfichier, FileFormat:=xlCSV, _
            CreateBackup:=False
        Loop
        'Sheets("Création fichiers").Select
        'Range("A1").Select
        'Application.Run Sheets("Création fichiers").Range("XFD1")
    End Sub

  6. #6
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Citation Envoyé par Nimitz-4145 Voir le message
    si je mets ActiveWorkbook.SaveAs Filename:="C:\Users\Public\Documents\MAJ TLC 2007\Amiens.csv" cela fonctionne.
    si c'est la variable non.
    Le problème viens donc de ta variable nomfichier qui elle même est crée a partir de nom_dr d'où la question pertinente que t'avais posé unparia à laquelle tu n'as pas répondu
    Quel est la valeur de nom_dr en mode debug ?
    Tu peux voir cette valeur au moment de l'erreur dans la fenetre des variables locales (si elle n'est pas affichée de base: onglet View -> Locals Window)

    PS: abuser des select c'est mal, les select sont lents et causent souvent des problèmes

  7. #7
    Membre confirmé Avatar de fuine0069
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Juillet 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2017
    Messages : 33
    Par défaut
    Citation Envoyé par halaster08 Voir le message
    PS: abuser des select c'est mal, les select sont lents et causent souvent des problèmes

    tout à fait d'accord !!!

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

Discussions similaires

  1. créer nom de fichiers avec variables
    Par Infra_Red dans le forum Fortran
    Réponses: 4
    Dernier message: 16/06/2010, 21h14
  2. [XLST] Nom de fichier avec variable
    Par Wells dans le forum XSL/XSLT/XPATH
    Réponses: 11
    Dernier message: 07/05/2008, 09h37
  3. Réponses: 23
    Dernier message: 26/03/2006, 20h36
  4. Shell: récupérer le bon nom de fichier dans une variable
    Par claralavraie dans le forum Linux
    Réponses: 1
    Dernier message: 10/01/2006, 11h45
  5. nom de fichier et variables d'environnement
    Par joebarthib dans le forum Langage
    Réponses: 2
    Dernier message: 18/07/2002, 15h21

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