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 :

Ouvrir boite de dialogue puis sélectionner un onglet particulier [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2012
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 180
    Points : 72
    Points
    72
    Par défaut Ouvrir boite de dialogue puis sélectionner un onglet particulier
    Bonjour,

    J'arrive à ouvrir la boite de dialogue permettant de modifier certaines propriétés sur une page.
    Cependant, j'aimerai que lors d'un clic sur un bouton, cela ouvre bien sur la boite de dialogue, mais avec l'onglet "En-tête/Pied de page" sélectionné. (Car la boite de dialogue s'ouvre avec l'onglet "Page" d'activé...)

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub CommandButton1_Click()
    Application.ScreenUpdating = False
    Sheets("Rapport").Activate
    Application.Dialogs(xlDialogPageSetup).Show
    '--> Ici il faudrait insérer la partie du code permettant d'avoir l'onglet "En-tête/Pied de page" activé...
    Sheets("MDP").Activate
    Application.ScreenUpdating = True
    End Sub
    Voila, le reste je sais pas comment faire pour ce bout de code ...

  2. #2
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Bonjour à toi,

    Je ne suis pas sur que tu puisse aller sélectionner l'onglet directement à l'ouverture du DialogPage.

    Si le but est de pouvoir renseigner l'entête ou le pied de page il sera peut être plus simple de te faire un UserForm qui ira directement renseigné entête et pied de page
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2012
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 180
    Points : 72
    Points
    72
    Par défaut
    Merci de ta réponse !!

    J'ai cherché sur internet, et je n'ai rien vu me permettant de changer d'onglet à partir de cette boite de dialogue excel... (ce qui est vraiment bizarre d'ailleurs...) : Si quelqu'un possède une solution ?

    Ok pour l'userform, mais c'est quel bout de code permettant de lire / ecrire dans ces en-tête/fond de page à partir de textbox ?

  4. #4
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Regarde ici
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

  5. #5
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2012
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 180
    Points : 72
    Points
    72
    Par défaut
    C'est un peu compliqué, mon userform ressemble à ça :

    Nom : 314802123.png
Affichages : 578
Taille : 13,2 Ko

    Ce qui me donne ce code :
    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
    Private Sub CommandButton1_Click()
    ActiveSheet.PageSetup.LeftHeader = TextBox1.Value
    ActiveSheet.PageSetup.CenterHeader = TextBox2.Value
    ActiveSheet.PageSetup.RightHeader = TextBox3.Value
    ActiveSheet.PageSetup.LeftFooter = TextBox4.Value
    ActiveSheet.PageSetup.CenterFooter = TextBox5.Value
    ActiveSheet.PageSetup.RightFooter = TextBox6.Value
    End Sub
     
    Private Sub CommandButton2_Click()
    Unload Me
    End Sub
     
    Private Sub UserForm_Initialize()
    TextBox1.Value = ActiveSheet.PageSetup.LeftHeader
    TextBox2.Value = ActiveSheet.PageSetup.CenterHeader
    TextBox3.Value = ActiveSheet.PageSetup.RightHeader
    TextBox4.Value = ActiveSheet.PageSetup.LeftFooter
    TextBox5.Value = ActiveSheet.PageSetup.CenterFooter
    TextBox6.Value = ActiveSheet.PageSetup.RightFooter
    End Sub
    Cela m'affiche du code VBA dans mes textbox, y a-t-il un moyen de convertir en version "compréhensible" ?

  6. #6
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    En quoi c'est compliqué. Ton USF est parfait

    Pour le code :
    Entête :
    Gauche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.PageSetup.LeftHeader = TxtBoxLeftHeader.Value
    Milieu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.PageSetup.CenterHeader = TxtBoxCenterHeader.Value
    Droite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.PageSetup.RightHeader = TxtBoxRightHeader.Value
    Je te laisse faire le pied de page

    Poste ton fichier Excel avec ton USF que l'on puisse voir.
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

  7. #7
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Bonjour,

    Nul besoin d'utiliser le Dialog si tu as un Userform
    Avec le lien proposé par cerede2000, tu vas retrouver les "paramètres" pour arriver à tes fins.
    Il te suffit alors de passer par PageSetup pour utiliser les données entrées dans ton Userform
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        With ActiveSheet.PageSetup
            .LeftHeader = ""
            .CenterHeader = "Le Titre"  'ou textbox1.text
            .RightHeader = ""
            .LeftFooter = "&F"  'Nom du classeur
            .CenterFooter = ""
            .RightFooter = "&P/&N"  'numérotation de pages
        End With
    MPi²

  8. #8
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2012
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 180
    Points : 72
    Points
    72
    Par défaut
    Merci pour votre aide !

    J'ai trouvé les codes VBA pour la boite de dialogue en français ^^ https://msdn.microsoft.com/fr-fr/lib.../ff822794.aspx

    Sinon, j'ai encore un petit problème, lorsque je saute une ligne (je tape ENTER) et bien cela m'en saute une supplémentaire lors de ma prévisualisation d'impression... Une idée ? j'ai utilisé des textbox comme vous venez de le voir sur mon userform.

  9. #9
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2012
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 180
    Points : 72
    Points
    72
    Par défaut
    Lors d'un retour à la ligne, dans l'un de mes textbox conditionnant l'entête par exemple, je remarque après visualisation, qu'il y a la présence d'un saut de ligne supplémentaire... (comme si j'avais effectué un saut de ligne alors que je voulais mettre mon texte à la ligne ...)

    Comment faire pour enlever ce saut de ligne ?

  10. #10
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    En effet je constate que le CR-LF provoque un double retour à la ligne dans les header/footer.

    Essaye ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .CenterHeader = Replace(TonTextBox.Value, Chr(13), "")
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

  11. #11
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2012
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 180
    Points : 72
    Points
    72
    Par défaut
    Bonne remarques !

    C'est nickel !

    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
    Private Sub CommandButton1_Click()
    ActiveSheet.PageSetup.LeftHeader = Replace(TextBox1.Value, Chr(13), "")
    ActiveSheet.PageSetup.CenterHeader = Replace(TextBox2.Value, Chr(13), "")
    ActiveSheet.PageSetup.RightHeader = Replace(TextBox3.Value, Chr(13), "")
    ActiveSheet.PageSetup.LeftFooter = Replace(TextBox4.Value, Chr(13), "")
    ActiveSheet.PageSetup.CenterFooter = Replace(TextBox5.Value, Chr(13), "")
    ActiveSheet.PageSetup.RightFooter = Replace(TextBox6.Value, Chr(13), "")
    Unload Me
    End Sub
     
    Private Sub CommandButton2_Click()
    Unload Me
    End Sub
     
    Private Sub CommandButton3_Click()
    Unload EEPP
     
    Sheets("Rapport").Activate
    ActiveSheet.PageSetup.LeftHeader = Replace(TextBox1.Value, Chr(13), "")
    ActiveSheet.PageSetup.CenterHeader = Replace(TextBox2.Value, Chr(13), "")
    ActiveSheet.PageSetup.RightHeader = Replace(TextBox3.Value, Chr(13), "")
    ActiveSheet.PageSetup.LeftFooter = Replace(TextBox4.Value, Chr(13), "")
    ActiveSheet.PageSetup.CenterFooter = Replace(TextBox5.Value, Chr(13), "")
    ActiveSheet.PageSetup.RightFooter = Replace(TextBox6.Value, Chr(13), "")
     
    On Error Resume Next
    Application.ScreenUpdating = False
    ' Afficher le quadrillage
        ActiveWindow.DisplayGridlines = False
    ' Afficher les en-têtes
        ActiveWindow.DisplayHeadings = True
    ' Afficher les barres de défilement
        ActiveWindow.DisplayHorizontalScrollBar = True
        ActiveWindow.DisplayVerticalScrollBar = True
    ' Afficher les onglets de classeur
        ActiveWindow.DisplayWorkbookTabs = True
    'Mode plein écran Désactiver
        Application.DisplayFullScreen = False
     
    Sheets("Rapport").Activate
    Application.Dialogs(xlDialogPrintPreview).Show
    Sheets("MDP").Activate
     
    Application.ScreenUpdating = True
    End Sub
     
    Private Sub UserForm_Initialize()
    TextBox1.Text = Replace(ActiveSheet.PageSetup.LeftHeader, Chr(13), "")
    TextBox2.Text = Replace(ActiveSheet.PageSetup.CenterHeader, Chr(13), "")
    TextBox3.Text = Replace(ActiveSheet.PageSetup.RightHeader, Chr(13), "")
    TextBox4.Text = Replace(ActiveSheet.PageSetup.LeftFooter, Chr(13), "")
    TextBox5.Text = Replace(ActiveSheet.PageSetup.CenterFooter, Chr(13), "")
    TextBox6.Text = Replace(ActiveSheet.PageSetup.RightFooter, Chr(13), "")
    End Sub

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

Discussions similaires

  1. [VB NET] Boite de dialogue pour sélectionner un répertoire
    Par JbTech dans le forum Windows Forms
    Réponses: 1
    Dernier message: 11/03/2008, 15h55
  2. Réponses: 2
    Dernier message: 10/07/2007, 16h55
  3. Réponses: 1
    Dernier message: 15/06/2007, 19h37
  4. adaptation de code VBA - ouvrir boite de dialogue
    Par p'tite Sandrine dans le forum Access
    Réponses: 10
    Dernier message: 18/09/2006, 15h07
  5. Réponses: 5
    Dernier message: 26/02/2006, 21h32

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