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 :

Nommer excel+PDF depuis source CONCATENER [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Avril 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Rédacteur technique

    Informations forums :
    Inscription : Avril 2017
    Messages : 57
    Par défaut Nommer excel+PDF depuis source CONCATENER
    Bonjour

    Voila je voudrais de l'aide pour mon fichier en piece jointe.

    j'aimerais pouvoir enregistré mon fichier depuis le bouton contrôle avec comme nom qui se trouve dans le cellule "source" en page titi;F3 .

    J'ai mon bouton contrôle fonctionnel mais la je coince.

    Merci d'avance pour votre aide
    je suis toujours novice ...

    Voici le code qui enregistre puis le sauvegarde en PDF a la source.

    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
    Sub Fermer_Classeur_avec_PDF()
     
    Dim Feuille As Worksheet
                  For Each Feuille In ThisWorkbook.Worksheets
                  If Feuille.Name <> "" Then Feuille.Protect "TOTO", DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFiltering:=True, AllowSorting:=True
                  Next
     
     
    Dim Rep As Long, sFichier As String
    Dim FSO As Object
     
        Rep = MsgBox("Voulez-vous sauvegarder avec les onglets en pdf ?", vbYesNo)
            If Rep = vbYes Then
            Set FSO = CreateObject("Scripting.FileSystemObject")
            sFichier = ThisWorkbook.Path & "\" & FSO.GetBaseName(ThisWorkbook.Name) & ".pdf"
     
            If FSO.FileExists(sFichier) Then
                Rep = MsgBox("Le fichier PDF existe déjà, confirmer son écrasement ?", vbYesNo)
                If Rep = vbYes Then SavePDF sFichier
            Else
                SavePDF sFichier
            End If
            Set FSO = Nothing
     
         End If
    End Sub
     
    Private Sub SavePDF(sNomFichier As String)
     
    ' Pour choisir les onglet en PDF
     
    Dim Ar(1) As String
     
        Ar(0) = "titi"
        Ar(1) = "tata"
     
        Application.ScreenUpdating = False
     
        Sheets(Ar).Select
     
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
                                        Filename:=sNomFichier, _
                                        Quality:=xlQualityStandard, _
                                        IncludeDocProperties:=True, _
                                        IgnorePrintAreas:=False, _
                                        OpenAfterPublish:=True
     
        Application.ScreenUpdating = True
     
       'Permer de ranger les cellule par defaut sur chaque onglet
     
        Sheets("tata").Select
        Range("B1").Select
        Sheets("titi").Select
        Range("C1").Select
     
     
        Sheets("titi").Visible = True
        Sheets("tata").Visible = True
        Sheets("toto").Visible = False
     
     
        ActiveWorkbook.Save 'Fermeture Avec sauvegarde
        CancelSortie = False 'reactive la croix de fermeture
        ActiveWorkbook.Close
     
    End Sub
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    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
    Par défaut
    Salut, Affecter un bouton à la procédure Enregistrer.

    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
    Option Explicit
     
    Private Declare Function SHCreateDirectoryEx Lib "Shell32.dll" Alias "SHCreateDirectoryExA" _
                                                 (ByVal hwnd As Long, _
                                                  ByVal pszPath As String, _
                                                  ByVal lngsec As Long) As Long
     
    Private Function CreationDossier(sDossier) As Long
    Dim Rep As Long
        Rep = SHCreateDirectoryEx(0&, sDossier, 0&)
    End Function
     
    Sub Enregistrer()
    Dim Rep As Long, sFichier As String
    Dim FSO As Object, sDossierSauvegarde As String
     
        sDossierSauvegarde = ThisWorkbook.Path & "\" & "Sauvegarde"
        CreationDossier sDossierSauvegarde
     
        sFichier = Feuil1.Range("F3")
        If NomFichierValide(sFichier) Then
            Rep = MsgBox("Voulez-vous sauvegarder en pdf ?", vbYesNo)
            If Rep = vbYes Then
                Set FSO = CreateObject("Scripting.FileSystemObject")
                sFichier = sDossierSauvegarde & "\" & sFichier
                If FSO.FileExists(sFichier & ".pdf") Then
                    Rep = MsgBox("Le fichier pdf existe déjà, confirmer son écrasement ?", vbYesNo)
                    If Rep = vbYes Then SavePDF_XLS sFichier
                Else
                    SavePDF_XLS sFichier
                End If
                Set FSO = Nothing
            End If
        Else
            Feuil1.Range("F3").Select
            MsgBox "Nom de fichier invalide", vbCritical + vbOKOnly
        End If
    End Sub
     
    Private Function NomFichierValide(sChaine As String) As Boolean
    Dim i As Long
    Const sCaracInterdits As String = """*/:<>?[\]|"
        NomFichierValide = True
        If Len(sChaine) = 0 Then
            NomFichierValide = False
            Exit Function
        End If
        For i = 1 To Len(sCaracInterdits)
            If InStr(sChaine, Mid$(sCaracInterdits, i, 1)) > 0 Then
                NomFichierValide = False
                Exit Function
            End If
        Next i
    End Function
     
    Private Sub SavePDF_XLS(sNomFichier As String)
    Dim Ar(1) As String
     
        Ar(0) = Feuil1.Name
        Ar(1) = Feuil2.Name
     
        Application.ScreenUpdating = False
        Sheets(Ar).Select
     
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
                                        Filename:=sNomFichier & ".pdf", _
                                        Quality:=xlQualityStandard, _
                                        IncludeDocProperties:=True, _
                                        IgnorePrintAreas:=False, _
                                        OpenAfterPublish:=False
        Sheets(Feuil1.Name).Select
     
        Application.DisplayAlerts = False
        ThisWorkbook.SaveCopyAs sNomFichier & ".xlsb"
        Application.DisplayAlerts = True
        Application.ScreenUpdating = True
    End Sub
    Images attachées Images attachées  

  3. #3
    Membre confirmé
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Avril 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Rédacteur technique

    Informations forums :
    Inscription : Avril 2017
    Messages : 57
    Par défaut
    Merci j’ai essayer il y a une erreur de compilation

    de l'aide Svp
    Nom : 01.png
Affichages : 1318
Taille : 22,5 Ko

    Merci

  4. #4
    Expert confirmé
    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
    Par défaut
    Salut, à toi de voir et appliquer : Développer avec Office 64 bits

    Même si Microsoft déconseille l'installation d'une version 64 bits d'Office.

    Office 32 bits est recommandé pour la plupart des utilisateurs
    Nous recommandons la version 32 bits d’Office pour la plupart des utilisateurs, car elle offre une plus grande compatibilité avec la plupart des autres applications, en particulier les compléments tiers. C’est la raison pour laquelle la version 32 bits d’Office est installée par défaut, même sur les systèmes d’exploitation Windows 64 bits. Sur ces systèmes, le client Office 32 bits est pris en charge en tant qu’installation Windows-32-on-Windows-64 (WOW64). WOW64 est l’émulateur x86 qui permet l’exécution de façon transparente des applications Windows 32 bits sur les systèmes Windows 64 bits. Cela permet aux utilisateurs de continuer à utiliser les contrôles ActiveX et les compléments COM Microsoft avec la version 32 bits d’Office.

  5. #5
    Membre confirmé
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Avril 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Rédacteur technique

    Informations forums :
    Inscription : Avril 2017
    Messages : 57
    Par défaut
    Merci oui effectivement mais l’ensemble des postes que se servirons du fichier serons en 64Bits
    J ai trouver puis testé avec PtrSafe fonctionne.*

    Par contre le fait d'ajouté un dossier Sauvegarde pas mal mais je souhaiterai qu il enregistre directement ou y il a la source du fichier ouvert .
    après mais recherches je coince ..

    Merci d'avance
    Stef

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Option Explicit
     
    Private Declare PtrSafe Function SHCreateDirectoryEx Lib "Shell32.dll" Alias "SHCreateDirectoryExA" _
                                                 (ByVal hwnd As Long, _
                                                  ByVal pszPath As String, _
                                                  ByVal lngsec As Long) As Long

  6. #6
    Membre confirmé
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Avril 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Rédacteur technique

    Informations forums :
    Inscription : Avril 2017
    Messages : 57
    Par défaut
    Bonsoir Merci a KIKI29
    j'ai rectifier le code
    Sur le format de la date effectivement le "/" pas correcte dans le windows ,
    Puis en ligne 74
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      ThisWorkbook.SaveCopyAs sNomFichier & ".xlsb"
    changer en xlsm

    Il me reste plus qu'il enregistre dans le dossier source si possible...

    Merci d’avance
    A plus

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

Discussions similaires

  1. Ouvrir un fichier pdf depuis Excel
    Par Daejung dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 22/02/2009, 00h00
  2. Réponses: 4
    Dernier message: 03/02/2009, 11h29
  3. [E-03]Publier un pdf depuis excel via une macro et avec les LIENS
    Par Gaillac dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 03/10/2008, 09h59
  4. Ouvrir un Pdf depuis Excel
    Par liop49 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/10/2007, 16h34
  5. Creer un pdf depuis un fichier Excel
    Par calimero91 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 29/06/2006, 14h23

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