Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA Recherche de mots dans le fichier et impression de la listview

  • Initiateur de la discussion Initiateur de la discussion Julie18
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Julie18

XLDnaute Nouveau
Bonjour à tous !
Voilà j'ai crée un fichier pour répertorier des documents, et j'ai mis une macro pour effectuer des recherches par mot-clés, mais je n'arrive pas faire imprimer la liste en ajoutant un bouton de commande (ou à faire imprimer quelques colonnes de cette liste)ni à faire en sorte que lorsqu'on clique sur une ligne de la liste on soit ramené à la feuille et à la ligne où se trouve cette ligne.

ci-joint mon document

Pouvez-vous me venir en aide s'il vous plait !
Merci beaucoup d'avance ! 🙂
 

Pièces jointes

Dernière édition:
Re : VBA Recherche de mots dans le fichier et impression de la listview

Bonjour Julie,

Pour l'impression sélective, faut-il que l'utilisateur choisisse les colonnes ? Sinon quelles sont les colonnes à imprimer ?

Pour le clic avec retour à la ligne:
VB:
Private Sub ListView1_Click()
    Dim i%, r&, b%
    For i = 1 To ListView1.ListItems.Count
        If ListView1.ListItems(i).Selected = True Then
            Worksheets(ListView1.ListItems(i).Text).Activate
            Exit For
        End If
    Next i
    Do
        r = Columns(1).Find(ListView1.ListItems(i).ListSubItems(1).Text, Cells(r + 1, 1)).Row
        b = True
        For j = 1 To 8
            If Cells(r, j) <> ListView1.ListItems(i).ListSubItems(j).Text Then
                b = False
                Exit For
            End If
        Next j
        r = r + 1
    Loop Until b = True
    Cells(r - 1, 1).Select
    Unload Me
End Sub

Pour l'impression en paysage:
VB:
Private Sub CommandButton7_Click()
Dim i%, j%
    Sheets.Add
    For i = 1 To ListView1.ColumnHeaders.Count - 1
        Cells(1, i) = ListView1.ColumnHeaders(i)
    Next
    For i = 1 To ListView1.ListItems.Count
        Cells(i + 1, 1) = ListView1.ListItems(i).Text
        For j = 1 To ListView1.ColumnHeaders.Count - 1
            Cells(i + 1, j + 1) = ListView1.ListItems(i).ListSubItems(j).Text
        Next j
    Next i
    Me.Hide
    With ActiveSheet
        .Columns.AutoFit
        .PageSetup.Orientation = xlLandscape
        .PrintOut
    End With
    Me.Show
    Application.DisplayAlerts = False
    ActiveSheet.Delete
    Application.DisplayAlerts = True
End Sub

Cordialement

KD
 
Re : VBA Recherche de mots dans le fichier et impression de la listview

Merci beaucoup ça marche super !!
Pour l'impression, j'aurai aimé que seules les colonnes "Titre", "Auteur" et "Edition" apparaissent.
 
Re : VBA Recherche de mots dans le fichier et impression de la listview

Re,

L'impression sélective (du coup j'ai désactivé l'impression paysage) :

VB:
Private Sub CommandButton7_Click()
Dim i%, j%, c%
    Sheets.Add
    For i = 1 To ListView1.ColumnHeaders.Count - 1
        Select Case i
            Case 2, 3, 5
                c = c + 1
                Cells(1, c) = ListView1.ColumnHeaders(i)
        End Select
    Next
    For i = 1 To ListView1.ListItems.Count
        'Cells(i + 1, 1) = ListView1.ListItems(i).Text
        c = 0
        For j = 1 To ListView1.ColumnHeaders.Count - 1
            Select Case j
                Case 1, 2, 4
                    c = c + 1
                    Cells(i + 1, c) = ListView1.ListItems(i).ListSubItems(j).Text
            End Select
        Next j
    Next i
    Me.Hide
    With ActiveSheet
        .Columns.AutoFit
        '.PageSetup.Orientation = xlLandscape
        .PrintOut
    End With
    Me.Show
    Application.DisplayAlerts = False
    ActiveSheet.Delete
    Application.DisplayAlerts = True
End Sub

Pour le bug la sub plante sur quelle ligne avec quel message ? Et pourrais tu donner les champs de la ligne sélectionnée ?

Cordialement

KD
 
Re : VBA Recherche de mots dans le fichier et impression de la listview

Merci pour l'impression c'est exactement ça!
Pour le bug en fait si on recherche un mot qui est trop souvent présent sur le fichier c'est à dire que la listview est longue, lorsqu'on clique sur une ligne pour se rendre à son emplacement sur la fichier, tout Excel plante et je suis obligée de forcer la fermeture d'Excel.
 
Re : VBA Recherche de mots dans le fichier et impression de la listview

Re,

Je te proposes quelques modifs :

Pour l'impression, je n'avais pas fait gaffe que i et j étaient des variables publiques donc : (juste remplacer i par g, j par k)
VB:
Private Sub CommandButton7_Click()
Dim g%, k%, c%
    Sheets.Add
    For g = 1 To ListView1.ColumnHeaders.Count - 1
        Select Case g
            Case 2, 3, 5
                c = c + 1
                Cells(1, c) = ListView1.ColumnHeaders(g)
        End Select
    Next g
    For g = 1 To ListView1.ListItems.Count
        'Cells(i + 1, 1) = ListView1.ListItems(i).Text
       c = 0
        For k = 1 To ListView1.ColumnHeaders.Count - 1
            Select Case k
                Case 1, 2, 4
                    c = c + 1
                    Cells(g + 1, c) = ListView1.ListItems(g).ListSubItems(k).Text
            End Select
        Next k
    Next g
    Me.Hide
    With ActiveSheet
        .Columns.AutoFit
        '.PageSetup.Orientation = xlLandscape
       .PrintOut
    End With
    Me.Show
    Application.DisplayAlerts = False
    ActiveSheet.Delete
    Application.DisplayAlerts = True
End Sub

Pour la sélection de la ligne :
VB:
Private Sub ListView1_Click()
    Dim g%, r&, b%, k%
    For g = 1 To ListView1.ListItems.Count
        If ListView1.ListItems(g).Selected = True Then
            Worksheets(ListView1.ListItems(g).Text).Activate
            Exit For
        End If
    Next g
    Cells(ListView1.ListItems(g).ListSubItems(8).Text, 1).Select
    Unload Me
End Sub

ET modifier :

dans la sub 'Sub recherche2()' module 'varpublique'
Code:
nbmaxcol = 7
par
Code:
nbmaxcol = 8

dans la sub 'Private Sub Initlistviewent()'
Code:
For i = 1 To nbmaxcol
par
Code:
For i = 1 To nbmaxcol - 1

dans la sub 'Private Sub remplirligne'
Code:
With ListView1
On Error GoTo 0
    .ListItems.Add , £nom & "££" & CStr(£i), £nomfeuille
    For j = 1 To nbmaxcol
        .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets(£nomfeuille).Cells(£i, j)
    Next j
    .ListItems(.ListItems.Count).ListSubItems.Add , , ""
End With
par
Code:
With ListView1
On Error GoTo 0
    .ListItems.Add , £nom & "££" & CStr(£i), £nomfeuille
    For j = 1 To nbmaxcol - 1 'KD
        .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets(£nomfeuille).Cells(£i, j)
    Next j
        .ListItems(.ListItems.Count).ListSubItems.Add , , Sheets(£nomfeuille).Cells(£i, j).Row 'KD
    .ListItems(.ListItems.Count).ListSubItems.Add , , ""
End With

Pour le redimensionnement des colonnes à priori elles s'auto-ajustent. Tu voudrais des largeurs fixes ? lesquelles ? Cordialement

KD
 
Re : VBA Recherche de mots dans le fichier et impression de la listview

Ouah merci ça marche parfaitement pour les lignes ! Bravo !

Pour les colonnes par exemple si le titre est trop long ça prend une page entière lors de l'impression et donc ça fait sortir plein de feuilles.
Donc il faudrait soit déterminer une taille pour les colonnes mais du coup le titre sera couper, ou alors que la ligne s'ajuste en plus de la colonne.
L'idéal serait d'avoir la première colonne de 10cm, et les deux suivantes de 8cm
 
Re : VBA Recherche de mots dans le fichier et impression de la listview

Re,

Heu on va dépasser les 21 cm.. Tu es repassée en paysage ? Ou sinon on peut laisser le auto ajust mais en limitant si plus d'une certaine valeur. Autre souci 1 cm ca fait combien en unité de taille colonne Excel ? 😛 Cordialement

KD
 
Dernière édition:
Re : VBA Recherche de mots dans le fichier et impression de la listview

Re,

A tester donc, en repassant au paysage, le paragraphe qui change :
VB:
Private Sub CommandButton7_Click()
'..................................................................................
    With ActiveSheet
        .Columns.AutoFit
        .Columns(1).ColumnWidth = WorksheetFunction.Min(45, .Columns(1).ColumnWidth)
        .Columns(2).ColumnWidth = WorksheetFunction.Min(36, .Columns(2).ColumnWidth)
        .Columns(3).ColumnWidth = WorksheetFunction.Min(36, .Columns(3).ColumnWidth)
        .PageSetup.Orientation = xlLandscape
       .PrintOut
    End With
'...................................................................
End Sub
 
Re : VBA Recherche de mots dans le fichier et impression de la listview

Re

Effectivement je l'avais remis en mode paysage
En tout cas c'est nickel ! Il suffit que je règle la taille en fonction ! 😀

Dernières petites questions (désolé j'abuse !) pour rendre le tableaux à imprimer plus sympa, est-ce qu'on peut mettre des bordures ?
Et comment fait-on pour que la première ligne qui contient les intitulés des colonnes soit en gras (et idéalement que le contenu soit centré) ?

Merci pour tout
 
Re : VBA Recherche de mots dans le fichier et impression de la listview

Re,

Peux tu envoyer un exemple de feuille à imprimer telle que tu la voudrait au niveau format ? polices, couleurs, bordures, centrage etc... Avec la ligne de titre et deux lignes significatives. Cordialement

KD
 
Re : VBA Recherche de mots dans le fichier et impression de la listview

re,

heu.. pour le corps du tableau on a :
_Calibri 11 ou Arial 10 pour le Titre
_Arial 10 pour l'auteur
_Calibri11 pour l'éditeur

Je fais quoi pour la colonne Titre ? 😕
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
645
Réponses
4
Affichages
440
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…