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 :

VBA SaveAs plusieurs Sheets & Value


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 6
    Par défaut VBA SaveAs plusieurs Sheets & Value
    Bonjour à toutes et à tous, après avoir parcouru plusieurs forums et des heures de test, je viens vous demander de l'aide !

    J'ai un "document de base" en .xlsm qui doit s'enregistrer sous grâce à VBA avec un nom de fichier qui utilise les informations saisies dans ce "document de base". Le code suivant fonctionne mais seulement avec le premier "& Sheets", et donc pas avec les suivants... Ce qui me donne actuellement un nom de fichier "XXX - .xlsm", il me manque donc des informations... Merci d'avance pour vos lumières

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub Enregistrer()
    ActiveWorkbook.SaveAs Filename:="C:\Users\XXX\Desktop\Entreprise\Clients\Base de données\" _
            & Sheets("Fiche technique (1)").Range("C5").Value & Sheets("Fiche technique (1)").Range("F5").Value & " - " & Sheets("Fiche technique (1)").Range("C6").Value & Sheets("Facture").Range("A3").Value & ".xlsm"
    End Sub

  2. #2
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonsoir,

    Un code beaucoup plus long mais qui a le mérite de gérer les éventuelles erreurs :

    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
    Sub Enregistrer()
    Dim CA As String
    Dim C1 As String
    Dim C2 As String
    Dim C3 As String
    Dim C4 As String
     
    CA = "C:\Users\XXX\Desktop\Entreprise\Clients\Base de données\"
    With Sheets("Fiche technique (1)")
        C1 = CStr(.Range("C5").Value)
        If C1 = "" Then
            MsgBox "Donnée vide !"
            .Activate
            .Range("C5").Select
            Exit Sub
        End If
        C2 = CSTR(.Range("F5").Value)
        If C2 = "" Then
            MsgBox "Donnée vide !"
            .Activate
            .Range("F5").Select
            Exit Sub
        End If
        C3 = CStr(.Range("C6").Value)
        If C3 = "" Then
            MsgBox "Donnée vide !"
            .Activate
            .Range("C6").Select
            Exit Sub
        End If
    End With
    With Sheets("Facture")
        C4 = CStr(.Range("A3").Value)
        If C4 = "" Then
            MsgBox "Donnée vide !"
            .Activate
            .Range("A3").Select
            Exit Sub
        End If
    End With
    ActiveWorkbook.SaveAs Filename:=CA & C1 & C2 & " - " & C3 & C4 & ".xlsm"
    End Sub

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 6
    Par défaut
    Merci beaucoup !! Le code fonctionne parfaitement

    Ca semble si simple pour certains... Ceci amène ma deuxième question, si jamais le champs qui correspond à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    With Sheets("Facture")
        C4 = CStr(.Range("A3").Value)
        If C4 = "" Then
            MsgBox "Donnée vide !"
            .Activate
            .Range("A3").Select
            Exit Sub
    Devait pouvoir être valide même en étant vide, quel serait le code svp ?

  4. #4
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour,

    Si tu souhaites malgré tout qu'un message te prévienne cette partie devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Sheets("Facture")
        C4 = CStr(.Range("A3").Value)
        If C4 = "" Then MsgBox "Donnée vide !"
    End With
    Sinon, si tu ne veux pas de message, cette partie devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With Sheets("Facture")
        C4 = CStr(.Range("A3").Value)
    End With
    Car si la variable C4 est vide elle ne va pas interagir dans le nom final...

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 6
    Par défaut
    Bonjour,

    Mon document fonctionne à merveille !

    Encore merci pour votre aide et votre rapidité de réponse (d'ailleurs très bien expliquées) !

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 6
    Par défaut Conservation mise en forme source Save.As
    Bonjour,

    Et oui encore moi !

    Mon document est fonctionnel et répond parfaitement à mes attentes d'un point de vu technique.

    En revanche, lorsque j'enregistre le nouveau document, les différentes mises en formes ne sont plus présentes (date longue, comptabilité, standard, etc).

    P.S. : je ne sais pas s'il y a un quelconque impact mais des cellules verrouillées sont présentes sur mon document source...

    Merci d'avance pour votre aide ! Je vous met ici mon code pour rappel :

    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
    Sub Enregistrer()
    '
    ' Touche de raccourci clavier : Ctrl + p
    '
    Dim CA As String
    Dim C1 As String
    Dim C2 As String
    Dim C3 As String
    Dim C4 As String
     
    CA = "C:\Users\XXX\Desktop\XXX\Clients\Base de données\"
    With Sheets("Fiche technique (1)")
        C1 = CStr(.Range("C5").Value)
        If C1 = "" Then
            MsgBox "Civilité vide."
            .Activate
            .Range("C5").Select
            Exit Sub
        End If
        C2 = CStr(.Range("F5").Value)
        If C2 = "" Then
            MsgBox "Nom vide."
            .Activate
            .Range("F5").Select
            Exit Sub
        End If
        C3 = CStr(.Range("C6").Value)
        If C3 = "" Then
            MsgBox "Numéro de devis vide."
            .Activate
            .Range("C6").Select
            Exit Sub
        End If
    End With
    With Sheets("Facture")
        C4 = CStr(.Range("J7").Value)
        If C4 = "" Then MsgBox "Numéro de facture vide."
    End With
    ActiveWorkbook.SaveAs Filename:=CA & C1 & " " & C2 & " - D" & C3 & " - F" & C4 & ".xlsm"
    End Sub

Discussions similaires

  1. [VBA-E] selectionner plusieurs sheets
    Par mapmip dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 08/02/2007, 16h42
  2. [VBA] Récupérer plusieurs résultats dans un recordset
    Par GarsDuCalvados dans le forum VBA Access
    Réponses: 6
    Dernier message: 29/11/2006, 09h41
  3. VBA supprimer plusieur ligne excel
    Par morgan47 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 20/06/2006, 20h56
  4. [VBA] Fusionner plusieurs colonnes en une seule
    Par brutos2 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 18/01/2006, 14h25
  5. [VBA-E] avec une fonction value
    Par laas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/11/2002, 13h22

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