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 :

Résultat dans une ListBox d'une recherche sur plusieurs colonnes


Sujet :

Macros et VBA Excel

  1. #21
    Membre chevronné
    Inscrit en
    Septembre 2007
    Messages
    1 132
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 132
    Points : 1 803
    Points
    1 803
    Par défaut
    re
    Citation Envoyé par Fabweb Voir le message
    Mais la, si je clic direct sur imprimer 'sans recherche" j'ai ça :
    Évidemment il n'y à rien dans la liste

    la fenêtre d'aperçu s'ouvre mais tout est bloqué, aucune action (entrée ou echap, pas possibilité de fermer la fenêtre)
    Là je ne sais pas ce que tu as comme version excel mais comme je n'imprime quasiment jamais je me contente de l'aperçu et je n'ai jamais eu de blocage.
    Essaies comme ceci, cela devrait corriger tes soucis.
    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
    Private Sub CommandButton5_Click() 'impression
    Dim tbl As Variant
        If ListBox1.ListCount > 0 Then
            tbl = ListBox1.List
            Workbooks.Add                 'création d'un nouveau classeur temporaire
            Range("A1").Resize(UBound(tbl), UBound(tbl, 2)).Value = tbl
            ActiveSheet.UsedRange.Columns.AutoFit
            ActiveSheet.PageSetup.PrintArea = ActiveSheet.UsedRange.Cells.Address
            ActiveSheet.PageSetup.Orientation = xlLandscape
         '   ActiveWorkbook.PrintPreview  'visualiser
            ActiveWorkbook.PrintOut       'impression
            ActiveWorkbook.Close False    'suppression du classeur temporaire
        Else
            MsgBox "Rien à imprimer ! :)"
        End If
    End Sub

  2. #22
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2021
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2021
    Messages : 27
    Points : 6
    Points
    6
    Par défaut
    Ca fonctionne nickel,
    un grand merci pour votre patience et votre gentillesse

    Fabrice

  3. #23
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2021
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2021
    Messages : 27
    Points : 6
    Points
    6
    Par défaut
    Encore une dernière question....svp

    mon bouton "imprimer ne fonctionne pas avec le bouton < à10% ?????????

    voici mon code pour le bouton "imprimer"
    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
    Private Sub Btn_Imprimer_Click() 'impression
    Dim tbl As Variant
        If ListBox1.ListCount > 0 Then
            tbl = ListBox1.List
            Workbooks.Add                 'création d'un nouveau classeur temporaire
            Range("A1").Resize(UBound(tbl), UBound(tbl, 2)).Value = tbl
            ActiveSheet.UsedRange.Columns.AutoFit
            ActiveSheet.PageSetup.PrintArea = ActiveSheet.UsedRange.Cells.Address
            ActiveSheet.PageSetup.Orientation = xlLandscape
         '   ActiveWorkbook.PrintPreview  'visualiser
            ActiveWorkbook.PrintOut       'impression
            ActiveWorkbook.Close False    'suppression du classeur temporaire
        Else
            MsgBox "Rien à imprimer ! :)"
        End If
    End Sub
    j'ai une erreur d’exécution 1004
    Erreur définie par l'application ou par l'objet

    Et si je clique sur débogage cette ligne est surlignée en jaune: Range("A1").Resize(UBound(tbl), UBound(tbl, 2)).Value = tbl

    Que dois je modifier svp?
    Fabrice

  4. #24
    Membre chevronné
    Inscrit en
    Septembre 2007
    Messages
    1 132
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 132
    Points : 1 803
    Points
    1 803
    Par défaut
    Bonsoir Fabweb
    Citation Envoyé par Fabweb Voir le message
    Que dois je modifier svp?
    Comme ceci peut-être si plusieurs classeurs ouverts :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.ActiveSheet.Range("A1").Resize(UBound(tbl), UBound(tbl, 2)).Value = tbl

  5. #25
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 951
    Points
    55 951
    Billets dans le blog
    131
    Par défaut
    Salut

    Citation Envoyé par Fabweb Voir le message
    Voila ça fonctionne, j'ai du enlever 2 colonnes car impossible de faire fonctionner si > 9 colonnes???[...]
    Citation Envoyé par anasecu Voir le message
    [...]
    Les listbox sont limitées en colonne effectivement et il faut choisir[...]
    Si on appuie le listbox sur une plage de données, on fait sauter cette limite

    Nom : 2021-04-30_102907.png
Affichages : 158
Taille : 152,1 Ko


    On peut également la faire sauter en affectant un array à la propriété List, puis on passe les AddItem et List(x,y)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub UserForm_Initialize()
      Dim t(0, 19)
      Dim i As Long, j As Long
     
      ListBox1.List = t
      ListBox1.Clear
      For i = 0 To 10
        ListBox1.AddItem ""
        For j = 0 To 19
          ListBox1.List(i, j) = i & ":" & j
        Next j
      Next i
    End Sub
    Nom : 2021-04-30_103525.png
Affichages : 136
Taille : 26,1 Ko
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #26
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2021
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2021
    Messages : 27
    Points : 6
    Points
    6
    Par défaut
    Merci Pierre pour la limitation Listbox, j'essaierai rapidement.

    La je suis plus bloqué avec mon bouton "imprimer" lors que j'ai sélectionné "Moyenne générale inférieure à 10%"
    Alors que bizarrement cela fonctionne dans tous les autres cas???

    Fabrice

  7. #27
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 951
    Points
    55 951
    Billets dans le blog
    131
    Par défaut
    Je suppose que
    • tu n'as qu'une ligne dans ta listbox pour Moyenne < 10%;
    • tu n'a pas Option Base 1 en entête de ton module, ce qui veut dire que tbl commence à l'indice 0 tant pour les lignes que pour les colonnes.



    Dès lors, il faudrait utiliser Range("a1").Resize(UBound(tbl) + 1, UBound(tbl, 2) + 1).Value = tbl car si tu n'as qu'une ligne dans ton listbox, tu vas essayer de "resizer" la plage à Ubound(tbl) qui vaut 0 et forcément, ça ne va pas passer car tu ne peux pas redimensionner une plage à 0 lignes.

    Ca me fait dire qu'il serait bien possible que dans les cas où "ça fonctionnait", tu loupais la dernière ligne et la dernière colonne qui n'étaient pas transférées dans la feuille avant l'impression.





    Citation Envoyé par anasecu Voir le message
    [...]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.ActiveSheet.Range("A1").Resize(UBound(tbl), UBound(tbl, 2)).Value = tbl
    ActiveWorkbook.ActiveSheet. ne sert à rien sur le plan technique. Range("a1") "non parentalisé" pointera toujours vers la feuille active, et la feuille active (ActiveSheet non parentalisé) sera forcément toujours dans le classeur actif, quelque soit le classeur qui contient le code en train d'être exécuté.

    Nom : 2021-05-01_095958.png
Affichages : 106
Taille : 33,2 Ko
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  8. #28
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2021
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2021
    Messages : 27
    Points : 6
    Points
    6
    Par défaut
    Merci Pierre,
    Effectivement, pour l'instant je n'avais qu'1 seul résultat < 10%

    J'ai mis votre code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("a1").Resize(UBound(tbl) + 1, UBound(tbl, 2) + 1).Value = tbl
    Et ça fonctionne
    Merci Beaucoup
    Amicalement
    Fabrice

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 13
    Dernier message: 23/06/2005, 10h56
  2. question de débutant sur les objets
    Par boucher_emilie dans le forum ASP
    Réponses: 3
    Dernier message: 06/08/2004, 10h51
  3. [MFC] Quelques questions de débutant...
    Par Sephi dans le forum MFC
    Réponses: 4
    Dernier message: 20/02/2004, 17h25
  4. Questions de débutant
    Par J-P-B dans le forum XMLRAD
    Réponses: 12
    Dernier message: 24/07/2003, 15h19
  5. [HyperFile] 2 questions de débutant
    Par khan dans le forum HyperFileSQL
    Réponses: 2
    Dernier message: 29/04/2002, 23h18

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