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

Microsoft 365 creation d'liste à imprimer

Banbara

XLDnaute Nouveau
Supporter XLD
Bonjour à tous,

Sur une feuille de calcul pour gérer une association, j’ai une colonne avec des cases à cocher « K » qui est lié avec la colonne « L » ou apparait une « coche » ou un « x » suivant que la cotisation est payée ou pas. Avec une macro VBA, je veux créer une feuille « Liste à imprimer » qui doit me ressortir uniquement le résultat des coches « payées », et éventuellement faire une mise à jour si une nouvelle coche est activée. Le programme ci-joint fonctionne si le feuille « Liste à imprimer » n’existe pas, elle est crée et remplie avec les données. Si elle existe il efface bien la feuille, mais elle reste vierge sans aucune donnée, alors je demande l’aide des spécialistes.

Sub ImprimerListeCoches()
Dim ws As Worksheet
Dim cell As Range
Dim newSheet As Worksheet
Dim rowNum As Integer
Dim cellValue As Variant

' Définir la feuille de calcul active
Set ws = ActiveSheet

' Vérifier si la feuille "Liste à Imprimer" existe déjà
On Error Resume Next
Set newSheet = Sheets("Liste à Imprimer")
On Error GoTo 0

' Si la feuille n'existe pas, la créer
If newSheet Is Nothing Then
Set newSheet = Sheets.Add(After:=Sheets(Sheets.Count))
newSheet.Name = "Liste à Imprimer"
Else

' Si la feuille existe, effacer les anciennes entrées
'newSheet.Cells.Clear
End If

' Initialiser le numéro de ligne pour la nouvelle feuille
rowNum = 1

' Parcourir chaque cellule de la colonne L
For Each cell In ws.Range("L2:L" & ws.Cells(ws.Rows.Count, "L").End(xlUp).Row)

' Vérifier la valeur de la cellule
cellValue = cell.Value

' Vérifier si la cellule est cochée
If cellValue = True Then

' Copier les valeurs des colonnes B, C, D et E à la nouvelle feuille
newSheet.Cells(rowNum, 1).Value = cell.Offset(0, -10).Value ' Colonne B
newSheet.Cells(rowNum, 2).Value = cell.Offset(0, -9).Value ' Colonne C
newSheet.Cells(rowNum, 3).Value = cell.Offset(0, -8).Value ' Colonne D
newSheet.Cells(rowNum, 4).Value = cell.Offset(0, -7).Value ' Colonne E
rowNum = rowNum + 1
End If
Next cell

' Message de débogage
MsgBox "Mise à jour terminée. Nombre de lignes ajoutées : " & rowNum - 1
End Sub
 

Banbara

XLDnaute Nouveau
Supporter XLD
@Banbara

Correction d'une faute de grammaire (conjugaison) dans les messages !!!
Bonjour, je viens de voir cette nouvelle version "V7", c'est super. je vais tester dans la journée. Le N° de ligne c'est essentiellement une facilité de communication entre nous, nous sommes 4 bénévoles ,le secrétaire qui reçoit le montant des adhésions, le trésorier qui enregistre, l'adjointe au trésorier, le président. tout le monde à ce logiciel, et quand il y a lieu de parler au téléphone d'un problème ou autre, on a constaté qu'il était plus facile de donner le N° de ligne, que le pédigré de la personne, d'autant plus qu'il ya beaucoup d'homonymes et des familles avec le même nom en veux -tu en voilà. On est en bretagne quand même. Mille merci
 

Banbara

XLDnaute Nouveau
Supporter XLD
 

Banbara

XLDnaute Nouveau
Supporter XLD
Bonsoir Phil69970,

A la demande des utilisateurs, j'ai modifié ton programme pour colorer les colonnes de la "liste à imprimer". Cela fonctionne, mais par contre, cela à créé des boutons radio de sélection à toutes entêtes de colonne à coté du nom. Civilité+bouton radio, et ainsi de suite, prénom, nom, N°Maison, etc.. inutile de te dire que je suis revenu à la version originale. je voudrais ton avis. Ci-joint le programme que j'avais inséré entre les balises 'Modif, et à l'endroit ou je l'avais inséré:

.Range("F2:F" & Derlig) = .Range("F2:F" & Derlig).Value
End With
' modif
Call ColorerColonnes
End Sub
Sub ColorerColonnes()
Dim Ws2 As Worksheet
Set Ws2 = ThisWorkbook.Sheets("Liste à Imprimer") ' Remplacez par le nom de votre feuille
Dim i As Integer
Dim couleurs As Variant
couleurs = Array(RGB(255, 245, 217), RGB(227, 254, 226), RGB(179, 204, 255), RGB(221, 221, 255), RGB(248, 204, 174), RGB(255, 245, 213)) ' Ajoutez vos couleurs ici
For i = 1 To Ws2.UsedRange.Columns.Count
Ws2.Columns(i).Interior.Color = couleurs((i - 1) Mod UBound(couleurs) + 1)
Next i
End Sub
Sub Modif1()
Dim Ws1 As Worksheet, Derlig&, Nb As String
Set Ws1 = Worksheets("Adhérents")
Derlig = Ws1.Range("A" & Rows.Count).End(xlUp).Row
' Modif

Ws1.Range("A1").AutoFilter
 

Banbara

XLDnaute Nouveau
Supporter XLD
Bonjour @Banbara

Montre moi plutôt comment tu voudrais le fichier et j'essaierais de le transcrire en VBA
==> Donc le fichier avec les couleurs etc qu'il devrait avoir ......

Ton bout de code est inexploitable en l'état.
Les couleurs sont exactement les même que la feuille "Adhérents" Chaque colonne de la feuille "liste à imprimer" a exactement les même couleurs que la feuille "Adhérents". D'ailleurs dans le bout de code, il y a les couleurs
 

Phil69970

XLDnaute Barbatruc
@Banbara

En partant de MON fichier du post #31 tu le verras

De plus si tu bricoles le code comme tu le fais tu n'as pas fini de venir sur le site ........ pour le faire remettre sur pieds !!!!
 

Pièces jointes

  • Creation liste sur feuille 2 V8.xlsm
    45.2 KB · Affichages: 2

Banbara

XLDnaute Nouveau
Supporter XLD
@Banbara

En partant de MON fichier du post #31 tu le verras

De plus si tu bricoles le code comme tu le fais tu n'as pas fini de venir sur le site ........ pour le faire remettre sur pieds !!!!
Je te remercie, je veux juste essayer de comprendre, et de ne pas trop embêter si je peux le faire. je vais regarder cette nouvelle version demain, et surtout essayer de voir ou j'ai merdé.
 

Phil69970

XLDnaute Barbatruc
@Banbara

et surtout essayer de voir ou j'ai merdé.
En supprimant 1 mot de mon code j'ai fait la même chose que ton bout code de 20 lignes .... (c'est juste de l'humour !!)

Et si tu remodifies encore le code et que tu n'y arrives pas repart d'une version qui fonctionne

Pour info les couleurs de ton code (que tu avais essayé de faire) ne correspondent pas au couleur de la 1ere feuille
 

Banbara

XLDnaute Nouveau
Supporter XLD
Franchement, je ne suis pas prêt d'y toucher, a part une petite modif, car actuellement tous les chiffres au dessus de 40 dans la "feuille à imprimer , N° de ligne ne s'affichent pas, mais c'est parce que ma version fait plus de 400 et la version de travail ici devait faire une quarantaine de ligne. je n'ai qu'un chiffre à modifier, après je ne touche à rien.
 

Phil69970

XLDnaute Barbatruc
@Banbara

Je regarde ce qui pourrait clocher !!
 

Phil69970

XLDnaute Barbatruc
@Banbara

Voici la V9 en principe plus de bug

N° de ligne ne s'affichent pas, mais c'est parce que ma version fait plus de 400
Ta limite est maintenant de 1 048 576 lignes cela te laisse un peu de temps

J'ai rajouté une couleur pour la colonne F (N° de ligne) et j'ai améliorer la présentation dans la feuille "Liste à imprimer"

Merci de ton retour
 

Pièces jointes

  • Creation liste sur feuille 2 V9.xlsm
    49.3 KB · Affichages: 5
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…