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 :

Imprimer les Colones au Choix


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 175
    Par défaut Imprimer les Colones au Choix
    Bonjour A tous ,

    je veux seulement savoir si c'est possible avec VBA de donner a l'utilsateur de choisir les Colonne qui veux imprimer , en les concaténant , par exemple si un tableu contien 5 colones dans l'ordre suivant:
    -Nom
    -Prenom
    -Adresse
    -situation familiale
    -ISF

    l'utilisateur aura le choix d'imprimer seulement Les lignes des colonnes Nom Adresse, dans cet ordre : Nom Adresse , les autres colonnes n'aiparaisse pas dans l'état Imprimé

    Comme moi je veux utiliser un formulaire qui propose a l'utilisateur d'ajouter les colones qui veux , je ne sais pas a ce que en VBA on peut le faire

    car on peut faire une chose similaire sur EXcel dans la mise en page :
    mais il y'a deux soucis :
    1- l'utilisatuer doit aprendre a taper quelques comandes .
    2- si on choisie par exemple la colone A et la colone C , elle seront pas concaténés a l'impression , et ce la c'est mon Vrais problème c'est pour ca que je veux paser par le VBA.

    Merci a tous ceux qui pouvent m'aidée de me pister vers la bonne piste

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu peux effectivement imprimer les colonnes que tu veux en masquant les colonnes que tu ne souhaites pas imprimer.
    Un problème avec ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
         Columns(i).EntireColumn.Hidden = True
    Tu dis
    A+

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Pour faire vite, je verrais assez un truc comme ça :
    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
        Set Plage = Application.InputBox("Sélectionner les colonnes à imprimer, " & vbCr & "maintenir la touche Ctrl pour sélectionner des plages séparées", Type:=8)
        liste = ";"
        For Each Col In Plage
            If InStr(liste, ";" & Col.Column & ";") = 0 Then
                liste = liste & Col.Column & ";"
            End If
        Next
        NbreColonne = Range("IV1").End(xlToLeft).Column
     
        For i = 1 To NbreColonne
            If InStr(liste, ";" & i & ";") = 0 Then
                Columns(i).EntireColumn.Hidden = True
            End If
        Next
        'Edition
        'Cells.EntireColumn.Hidden = False 'mis en remarque pour tester
    A+

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 175
    Par défaut
    J'ai testé la amcro , et j'ai un message d'erreur (Incompatibilité de Type)

    juste aprés la selection des colones

    la variable plage est de quel Type ?

    je ne comprend pas que ce qu'elle fait

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Deux choses, donc
    Tu déclares liste comment ? C'est un string
    A quoi sert ";" ? A séparer les données.
    Imagine que la colonne 1, 3 et 5 soient sélectionnée, si tu as 23 colonnes dans ta base, tu vas imprimer 1, 10, 11, 12,... à 19, ainsi que les colonnes 3, 5, 13, 15, 23 et 25... Ehcépaçketuvoeu
    Si tu sépares par un ; (qui doit être placé avant et après le N° de colonne, tu as
    ;1;3;5;
    là tu es certain, si tu dis ";1;", de ne pas avoir les 10, 11 deux fois, 12... etc.
    Pour l'erreur, je n'ai pas compris, précise
    A+

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 175
    Par défaut
    j'ai déclaré liste com string , et le bogue est toujour la et le message d'erreur que je recois ar l"editeur et le même:

    Erreur d'éxécution "13"

    Incompatibilité de Type

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Alors ne mets rien. Essaie en variant. Je ne comprends pas, je viens de tester et ça fonctionne.
    Tu sélectionnes bien des colonnes, pas des plages ?
    A+

    PS - Col et plage sont des Ranges

    Si tu as toujours des pbs, mets ton code tel que tu l'as adapté
    A+

  8. #8
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 175
    Par défaut
    j'ai rien changé dans le 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
    Sub colonnesAimprimer()
    'Dim liste As String
    'Dim plage As Range
    'Dim col As Variant
      Set plage = Application.InputBox("Sélectionner les colonnes à imprimer, " & vbCr & "maintenir la touche Ctrl pour sélectionner des plages séparées", Type:=8)
        liste = ";"
        For Each col In plage
            If InStr(liste, ";" & col.Column & ";") = 0 Then
                liste = liste & col.Column & ";"
            End If
        Next
        NbreColonne = Range("IV1").End(xlToLeft).Column
     
        For I = 1 To NbreColonne
            If InStr(liste, ";" & I & ";") = 0 Then
                Columns(I).EntireColumn.Hidden = True
            End If
        Next
        'Edition
        'Cells.EntireColumn.Hidden = False 'mis en remarque pour tester
    End Sub
    et je n'arive toujours pas a aller jusquau bout, aprés la selection des colonnes le débogeur se positione sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set plage = Application.InputBox("Sélectionner les colonnes à imprimer, " & vbCr & "maintenir la touche Ctrl pour sélectionner des plages séparées", Type:=8)
    et quand j'essaye de continuer l'éxécution il me redone le choix de séléctionner les colonnes et il n'avance pas dans l'éxécution

    juste une petite question

    quand tu fait l'apercu de l'impression les colonnes que tu a selectionnés aparaisse cote a cote :
    exp si tu a sélé&ctionné la col A et G
    lors de l'impression les colonnes sont cote a cote come si tu a imprimé la col A et B ou il imprime A puis G ?
    car j'ai essayé avec la mise en page de Excel dans feuille (Zone d'impression)
    la commande B:B;D . dans l'apercu les autres colonnes sont bien lmasquées mais a l'impression il me les resort pas dans un tableau , il imprime la colonne B toute seule et puis la col G

  9. #9
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 175
    Par défaut
    désolé pour les erreurs de frapes
    B:B;D . dans l'apercu les autres colonnes sont bien lmasquées mais a l'impression il me les resort pas dans un tableau , il imprime la colonne B toute seule et puis la col G
    je voulé dire B:B;D

  10. #10
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Columns("C:D").Select
        Selection.EntireColumn.Hidden = True
        Columns("A:H").Select
        ActiveSheet.PageSetup.PrintArea = "$A:$H"
    En supposant que tu cache les colonnes C et D
    la plage d'impression ne doit ps être coupée.
    comme décrit ci-dessus pour imprimer de A à H sans C et D
    A+

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Je te joins le fichier qui me sert dans mes essais
    Trois points importants pour qu'il fonctionne :
    1 - La cellule A1 est renseignée,
    2 - Pas de ligne ou colonne vide dans la plage de données
    3 - Pour sélectionner plusieurs colonne tenir la touche CTRL ENFONCÉE tout du long !
    Il semble bien que si ça ne fonctionne pas chez toi, c'est que tu as essayé mon code sans lire ce que je mets dans l'inputbox
    Le fichier : Pièce jointe 15430
    A+

  12. #12
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Pourquoi ne pas définir une zone d'impression ?

    Sélectionner les colonnes, puis choisir Fichier > Zone d'impression > Définir.

  13. #13
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Parce que si l'on fait ça on a une colonne par page. (Bonjour zaza)

  14. #14
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 175
    Par défaut
    Merci ouskel'n'or pour le fichier , a l'exécution de la macro je ne recoit pas de message d'erreur, mais je ne sias pas que ce qu'elle fait la macro au juste , je voit quelle masque les colonnes non sélectionnés en fraction de seconde et elle les affiches de suite , faut'il peut être ajouter l'instruction d'impression avant d'afficher les cellules masqués ?

    je vais t'envoyer un fichier qui contient un Forumlaire que je veux créer
    tu me dira seulemnt si c'est possible de le faire ? et si tu poura m'aider avec quelque lignes de code sa serra très simpa

  15. #15
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Sur le message N° 3 j'ai mis ces deux lignes en remarque
    'Edition
    'Cells.EntireColumn.Hidden = False 'mis en remarque pour tester
    L'édition doit effectivement être lancée avant l'affichage des colonnes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Activesheet.printout
    DoEvents 'laisse le temps à l'impression de s'exécuter
    Cells.EntireColumn.Hidden = False
    A+

  16. #16
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 175
    Par défaut
    Merci ouskel'n'or , tu m'aide vraiment dans mon projet , j'ai met beaucoups de temps a chercher la soulution mais sans ton aide je croi que j'aurais jamais réussi.

    je vais tester la macro sur mon fichier qui contient pas mal de colonnes ,
    et tu trouvera ci-joint le userforme que je veux créer pour faciliter encor la tache à l'utilisateur : SelectionColonneUserForme.zip

    en premier je veux seulement récuperer dans la "ListBox1" les champs qui existe sur ma feuille, et je doit récuperer pour chaque champs le Numeré de ligne te de colonne , et l'utilisateur aura le choix d'ajouter ou de retirer les champs a ListBox2
    et quand l'utilisateur imprime la selection il aura que les colonnes des champs qu'il a ajouter a ListBox2

    je ne sais pas a ce que j'étais claire dans mon explication, et je ne sais non plus a ce que c'est la bonne démarche pour réaliser l'application.
    si tu à les d'autre idées qui te semble plus simples ou plus efficaces pour fonctionner ce formulaire merci de me les comminiques.

  17. #17
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    le nombre de possiblité de selection de colonne étant relativement limité, peut etre serait t'il interressant de passer par les affichages personalisés.?
    une fois le travail de base réalisé, c'est quand même assez pratique cette affaire

  18. #18
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Supprime "tout" le code que tu as dans ton userform et remplace par ça
    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
    Dim FL1 As Worksheet
     
    Private Sub CommandButton1_Click()
    Me.ListBox2.AddItem Me.ListBox1.List(Me.ListBox1.ListIndex)
    End Sub
     
    Private Sub CommandButton2_Click()
    Me.ListBox2.List = Me.ListBox1.List
    End Sub
     
    Private Sub CommandButton3_Click()
    Me.ListBox2.RemoveItem Me.ListBox2.ListIndex
    End Sub
     
    Private Sub CommandButton4_Click()
    Me.ListBox2.Clear
    End Sub
     
    Private Sub MultiPage1_Change()
     
    End Sub
     
    Private Sub UserForm_Activate()
    Set FL1 = Worksheets("FichierCentrale")
    Dim NoCol
    NoCol = 1
    Do
        Me.ListBox1.AddItem FL1.Cells(1, NoCol).Value
        NoCol = NoCol + 1
    Loop While FL1.Cells(1, NoCol).Value <> ""
     
    End Sub
    Ça m'a amusé de faire ça mais je te laisse chercher un peu pour l'impression, tu as tout ce qu'il faut si tu examines comment je récupère les données dans Listbox1 pour renseigner Listbox2, ceci pour récupérer les noms de colonnes sélectionnées. Et pour appliquer le code que tu as déjà pour masquer les autres, tu devrais t'en sortir.
    Si tu as un "gros" pb, mais vraiment un "gros", tu siffles
    A+

  19. #19
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Par défaut
    Citation Envoyé par alsimbad
    le nombre de possiblité de selection de colonne étant relativement limité, peut etre serait t'il interressant de passer par les affichages personalisés.?
    une fois le travail de base réalisé, c'est quand même assez pratique cette affaire
    c'est la solution habituelle à ce titre de problème et de toutes la meilleure

  20. #20
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Citation Envoyé par random
    Citation Envoyé par Alsimblad
    le nombre de possiblité de selection de colonne étant relativement limité, peut etre serait t'il interressant de passer par les affichages personalisés.?
    une fois le travail de base réalisé, c'est quand même assez pratique cette affaire
    c'est la solution habituelle à ce titre de problème et de toutes la meilleure
    Je veux pas mourir idiot ! Je veux pas mourir idiot ! Un exemple svp...
    D'avance merci pour ma santé mentale

Discussions similaires

  1. Aucune distance entre les colones d'un tableau
    Par FrankOVD dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 29/06/2005, 13h05
  2. Réponses: 3
    Dernier message: 14/03/2005, 20h02
  3. Comment imprimer les FAQ
    Par tran dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 1
    Dernier message: 22/02/2005, 20h15
  4. imprimer les exception
    Par deeal dans le forum Général Python
    Réponses: 2
    Dernier message: 05/01/2005, 17h16
  5. imprimer les bgcolor
    Par C.M dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 16/12/2004, 15h34

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