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 :

problème de code [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 442
    Par défaut problème de code
    Bonjour à tous

    voilà je souhaite imprimer les onglets choisi dans une liste déroulante d'un userform et je bute sur ce code qui ne répond pas à mes attentes
    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
    Sub printchoisis_Click()
    Dim I As Integer
    frchoiximpression.Hide
    With lstchoixtableaux
      For I = 0 To .ListCount - 1
        If .Selected(I) Then
        Sh = Sheets(.List(I)).Name
            With Sheets(Sh).PageSetup
                              'Définit la zone d'impression pour une plage de cellules.
                          .PrintArea = Range(Cells(1, 1), Cells(dernlig, derncol)).Address
                          'Mise en page: définit les marges
                          .Orientation = xlLandscape  'paysage
                          '.FitToPagesWide = 1
                          '.FitToPagesTall = 1
                          .Zoom = 85
                          .LeftMargin = Application.InchesToPoints(0.3)
                          .RightMargin = Application.InchesToPoints(0.3)
                          .TopMargin = Application.InchesToPoints(0.3)
                          .BottomMargin = Application.InchesToPoints(0.3)
                          .HeaderMargin = Application.InchesToPoints(0.5)
                          .FooterMargin = Application.InchesToPoints(0.5)
                          .LeftFooter = "Imprimé le " & Date
                    '     .CenterFooter = "texte section centrale"
                          .RightFooter = "Edité par " & Application.UserName
            End With
        End If
      Sheets(.List(I)).PrintPreview
     
    Next
    End With
    le sh.name me donne bien le nom des onglets choisis mais je n'arrive pas à faire le pagesetup et le preveiw ne me choisi pas les bons onglets.

    Je galère
    merci pour votre aide
    cordialement

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu
    bonjour

    il faut que tu separe la list (listbox) de la liste de sheets dans ta tete

    ce n'est pas la meme chose

    il faut que tu fasse un truc du genre

    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
    Sub printchoisis_Click()
    Dim I As Integer
    dim lesfeuilles
    frchoiximpression.Hide
    With lstchoixtableaux
      For I = 0 To .ListCount - 1
        If .Selected(I) Then
       redim preserve lesfeuilles(1 to i) 
    lesfeuilles(i)=.Selected(I)
    Sh = Sheets(.Selected(I))
     
            With Sheets(Sh).PageSetup
                              'Définit la zone d'impression pour une plage de cellules.
                          .PrintArea = Range(Cells(1, 1), Cells(dernlig, derncol)).Address
                          'Mise en page: définit les marges
                          .Orientation = xlLandscape  'paysage
                          '.FitToPagesWide = 1
                          '.FitToPagesTall = 1
                          .Zoom = 85
                          .LeftMargin = Application.InchesToPoints(0.3)
                          .RightMargin = Application.InchesToPoints(0.3)
                          .TopMargin = Application.InchesToPoints(0.3)
                          .BottomMargin = Application.InchesToPoints(0.3)
                          .HeaderMargin = Application.InchesToPoints(0.5)
                          .FooterMargin = Application.InchesToPoints(0.5)
                          .LeftFooter = "Imprimé le " & Date
                    '     .CenterFooter = "texte section centrale"
                          .RightFooter = "Edité par " & Application.UserName
            End With
        End If
      Next
     
    'ici dans "lesfeuilles" tu a toutes les feuilles que tu a selectionné dans ta listbox
    Sheets(lesfeuilles).PrintPreview
     
    End With
    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 442
    Par défaut
    Merci Patrick

    mais j'obtiens uen erreur mismatch sur le redim

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Regarde la ligne 10 de ton code (Erreur assez répandue)

    Sinon, utilisant une variable objet de type Worksheet
    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
    Private Sub PrintChoisis_Click()
    Dim Sh As Worksheet
    Dim i As Integer
     
    Me.Hide
    With Me.lstChoixTableaux
        For i = 0 To .ListCount - 1
            If .Selected(i) Then
                Set Sh = Sheets(.List(i))
                With Sh.PageSetup
                    'Définit la zone d'impression pour une plage de cellules.
                    .PrintArea = Sh.Range(Sh.Cells(1, 1), Sh.Cells(DernLig, DernCol)).Address
                    'Mise en page: définit les marges
                    .Orientation = xlLandscape         'paysage
                    '.FitToPagesWide = 1
                    '.FitToPagesTall = 1
                    .Zoom = 85
                    .LeftMargin = Application.InchesToPoints(0.3)
                    .RightMargin = Application.InchesToPoints(0.3)
                    .TopMargin = Application.InchesToPoints(0.3)
                    .BottomMargin = Application.InchesToPoints(0.3)
                    .HeaderMargin = Application.InchesToPoints(0.5)
                    .FooterMargin = Application.InchesToPoints(0.5)
                    .LeftFooter = "Imprimé le " & Date
                    '     .CenterFooter = "texte section centrale"
                    .RightFooter = "Edité par " & Application.UserName
                End With
                Sh.PrintPreview
                Set Sh = Nothing
            End If
        Next i
    End With
    End Sub

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 442
    Par défaut
    bonjour mercatog

    avec ton code j'ai une erreur 1004 sur le .printarea

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Tes valeurs DernLig et DernCol sont elles définis quelque part? (j'avais supposé au vu de ton code que ce sont des variables globales contenant des valeurs >0)

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 442
    Par défaut
    autant pour moi

    effectivement j'ai oublié de redefinir ces derncol et dernlig
    Ton code Mercatog fonctionne à Merveille et je t'en remercie

    sans doute celui de Patrick fonctionne également, je le testerai aussi
    et vais tenir compte de ses remarques
    un grand merci à vous deux et à ce fantastique forum
    bien à vous

  8. #8
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonsoir à tous,

    Je pense, Patrick que ton code mérite une variable supplémentaire, j'ai peut-être tort, et devrait commencer ainsi, en suivant le même principe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub printchoisis_Click()
    Dim I As Integer, x As Integer
    Dim lesfeuilles
    frchoiximpression.Hide
    x = 0
    With lstchoixtableaux
      For I = 0 To .ListCount - 1
        If .Selected(I) Then
          x = x + 1
          ReDim Preserve lesfeuilles(1 To x)
          lesfeuilles(x) = .Selected(I)
          Sh = Sheets(.Selected(I))
          ............
    bonne soirée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  9. #9
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Re
    Bonjour a tous
    oupss!!!! autant pour moi casefayere tu a raison je n'est pas agrémenté la variable pour le compteur

    que veux tu il y a des jours comme ca

    merci pour la correction

    c'est la methode que j'utilise personnellement
    d'ailleurs si Pierre67 avait fait une petite recherche sur les messages recents
    il aurait trouver CETTE DISCUSSION

    la proposition que j'avais faite est basée sur le meme principe avec redim preserve
    Au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

Discussions similaires

  1. problème de code avec un tableau
    Par richard038 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/05/2006, 17h35
  2. problème de code javascript pour une vue 360°
    Par tomguiss dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/03/2006, 22h50
  3. [POO] Problème de code PHP avec Internet Explorer
    Par bzoler dans le forum Langage
    Réponses: 5
    Dernier message: 12/02/2006, 11h00
  4. Problème de code besoin d un petit depannage
    Par rakengoule dans le forum MFC
    Réponses: 3
    Dernier message: 10/10/2005, 16h25
  5. Probléme de code non portable
    Par Stany dans le forum Windows
    Réponses: 2
    Dernier message: 23/08/2005, 11h02

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