Autres remplir bannière en fonction des cellules

  • Initiateur de la discussion Initiateur de la discussion gh4
  • 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 !

gh4

XLDnaute Occasionnel
bonjour à toutes et tous,

j'aimerai créer un résumé d'une feuille, sur une bannière ou autre chose en fonction de certaines cellules
mais je ne sais pas si cela est réalisable
Auriez vous des suggestions à me faire en partant du fichier joint
Par avance merci
cdt
 

Pièces jointes

Solution
Bonjour GH4,
Un essai en PJ. Je n'utilise pas la MFC mais la reconstitue en VBA, car ma version VBA 6.3 ne permet pas facilement d'extraire la couleur MFC d'une cellule. Avec :
VB:
Sub Macro2()
    Application.ScreenUpdating = False
    For L = 3 To Range("A65500").End(xlUp).Row
        If Cells(L, "C") > Cells(L, "B") Then
            Texte = Texte & Cells(L, "A") & Chr(10)
        End If
    Next L
    Set objShp = ActiveSheet.Shapes.AddShape(msoShapeVerticalScroll, 329.25, 99.75, 346.5, 391.5)
    objShp.Name = "Bannière"
    ActiveSheet.Shapes("Bannière").TextFrame.Characters.Text = Texte
End Sub

Addon : Si vous disposez d'une version VBA > 6.3 alors vous pouvez tenter :
VB:
Sub Macro2()
    Application.ScreenUpdating = False...
Bonjour GH4,
Un essai en PJ. Je n'utilise pas la MFC mais la reconstitue en VBA, car ma version VBA 6.3 ne permet pas facilement d'extraire la couleur MFC d'une cellule. Avec :
VB:
Sub Macro2()
    Application.ScreenUpdating = False
    For L = 3 To Range("A65500").End(xlUp).Row
        If Cells(L, "C") > Cells(L, "B") Then
            Texte = Texte & Cells(L, "A") & Chr(10)
        End If
    Next L
    Set objShp = ActiveSheet.Shapes.AddShape(msoShapeVerticalScroll, 329.25, 99.75, 346.5, 391.5)
    objShp.Name = "Bannière"
    ActiveSheet.Shapes("Bannière").TextFrame.Characters.Text = Texte
End Sub

Addon : Si vous disposez d'une version VBA > 6.3 alors vous pouvez tenter :
VB:
Sub Macro2()
    Application.ScreenUpdating = False
    For L = 3 To Range("A65500").End(xlUp).Row
        If Cells(L, "D").DisplayFormat.Interior.Color = vbRed Then
            Texte = Texte & Cells(L, "A") & Chr(10)
        End If
    Next L
    Set objShp = ActiveSheet.Shapes.AddShape(msoShapeVerticalScroll, 329.25, 99.75, 346.5, 391.5)
    objShp.Name = "Bannière"
    ActiveSheet.Shapes("Bannière").TextFrame.Characters.Text = Texte
End Sub
".DisplayFormat.Interior.Color" permet de lire la couleur donnée par la MFC.
( attention, évidemment non testée )
 

Pièces jointes

Dernière édition:
Bonjour @gh4
question : pourquoi XLS alors que tu travaille sur 2019 ?
c'est un xlsm version supérieur à 2003
sinon c'est simple
voici une démo
Bonjour,
merci pour la reponse
je suis sur excel 2003
j'ai teste votre programme mais je bloque sur
If plage.Cells(i, 4).DisplayFormat.Interior.Color = vbRed Then
est ce que cela provient que les cellules en rouge sont des mfc
 
Bonjour GH4,
Un essai en PJ. Je n'utilise pas la MFC mais la reconstitue en VBA, car ma version VBA 6.3 ne permet pas facilement d'extraire la couleur MFC d'une cellule. Avec :
VB:
Sub Macro2()
    Application.ScreenUpdating = False
    For L = 3 To Range("A65500").End(xlUp).Row
        If Cells(L, "C") > Cells(L, "B") Then
            Texte = Texte & Cells(L, "A") & Chr(10)
        End If
    Next L
    Set objShp = ActiveSheet.Shapes.AddShape(msoShapeVerticalScroll, 329.25, 99.75, 346.5, 391.5)
    objShp.Name = "Bannière"
    ActiveSheet.Shapes("Bannière").TextFrame.Characters.Text = Texte
End Sub

Addon : Si vous disposez d'une version VBA > 6.3 alors vous pouvez tenter :
VB:
Sub Macro2()
    Application.ScreenUpdating = False
    For L = 3 To Range("A65500").End(xlUp).Row
        If Cells(L, "D").DisplayFormat.Interior.Color = vbRed Then
            Texte = Texte & Cells(L, "A") & Chr(10)
        End If
    Next L
    Set objShp = ActiveSheet.Shapes.AddShape(msoShapeVerticalScroll, 329.25, 99.75, 346.5, 391.5)
    objShp.Name = "Bannière"
    ActiveSheet.Shapes("Bannière").TextFrame.Characters.Text = Texte
End Sub
".DisplayFormat.Interior.Color" permet de lire la couleur donnée par la MFC.
( attention, évidemment non testée )
bonjour sylvanu
votre solution fonctionne parfaitement j'ai pris la version <6.3 car je suis en 6.3
je vais encore abuser s'il y a des doublons sur la colonne A comment je peux les éliminer et qu'il n'apparaissent pas dans la banniere
 
Re,
@gh4,
Il suffit de vérifier qu'avant la ligne considérée l'item n'existe pas, avec :
VB:
Sub Macro2()
    Dim DL%, L%, texte$
    Application.ScreenUpdating = False
    DL = Range("A65500").End(xlUp).Row
    For L = 3 To DL
        If Cells(L, "C") > Cells(L, "B") Then
            If Application.CountIf(Range(Cells(2, "A"), Cells(L - 1, "A")), Cells(L, "A")) = 0 Then
                texte = texte & Cells(L, "A") & Chr(10)
            End If
        End If
    Next L
    Set objShp = ActiveSheet.Shapes.AddShape(msoShapeVerticalScroll, 329.25, 99.75, 346.5, 391.5)
    objShp.Name = "Bannière"
    ActiveSheet.Shapes("Bannière").TextFrame.Characters.Text = texte
End Sub
 

Pièces jointes

Bonjour gh4, sylvanu, patricktoulon,

Je ne vois pas l'intérêt d'une "bannière", voyez le fichier joint et ces macros :
VB:
Sub Filtrer()
Application.ScreenUpdating = False
With Range("D1:D" & Range("A" & Rows.Count).End(xlUp).Row)
    .Formula = "=1/(C1>B1)/(MATCH(A1,A:A,0)=ROW())"
    .SpecialCells(xlCellTypeFormulas, 16).EntireRow.Hidden = True 'masque
    .ClearContents
End With
End Sub

Sub RAZ()
Rows.Hidden = False 'affiche
End Sub
Les doublons en colonne A ne sont pas affichés.

A+
 

Pièces jointes

Dernière édition:
- 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
4
Affichages
165
Réponses
40
Affichages
1 K
Réponses
10
Affichages
347
Retour