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 !

julien974

XLDnaute Occasionnel
Bonjour,

J'ai besoin de votre aide concernant une petite macro toute simple mais que je n'arrive pas à créer...

Je souhaiterais que dans chaque onglet, toutes les cellules dont .Font.ColorIndex = 33, le résultat soit = à 0.

J'ai essayé mais ça ne fonctionne pas...


HTML:
Sub hihi()
Dim C As Range
For Each C In Workbook

If C.ColorIndex = 33 Then
ActiveCell.Value = 0
End If

Next C


End Sub

Merci de votre aide,

Juli3n 974
 
Re : For each / next

bonjour julien

Code:
Sub hihi()
Dim C As Range
For Each sh In Sheets
 For Each C In sh.Cells
   If C.Interior.ColorIndex = 33 Then
    C.Value = 0
   End If
 Next C
Next sh
End Sub

mais ne soit pas trop pressé !!
l'examen de 65536*256 cellules par page peut prendre un certain temps
 
Re : For each / next

Re

Je t'avais prevenu !!!

Code:
Sub hihi()
Dim C As Range
For Each sh In Sheets
 For Each C In sh.Range("A1:Z500")
   If C.Font.ColorIndex = 33 Then
    C.Value = 0
   End If
 Next C
Next sh
End Sub

Excuse moi je n'avais pas respecté le Font et mis Interior par habitude
 
Re : For each / next

Bonjour Julien, PierreJean😀

Essaie ceci, cela ira plus vite mais si tu as beaucoup de feuille et une grande plage de cellules occupées sur chaque feuille se sera de toute façon un peu long:

Code:
Sub MettreAjourCellulesCouleur33()
    Dim Plage As Range, plgCouleur As Range, Cell As Range
    Dim sh As Worksheet
 
    For Each sh In ThisWorkbook.Worksheets
        Set plgCouleur = Nothing
        Set Plage = Nothing
        Set Cell = Nothing
        'réduction de la plage
        For Each Plage In sh.UsedRange.Columns
            If IsNull(Plage.Font.ColorIndex) Then
                If plgCouleur Is Nothing Then
                    Set plgCouleur = Plage
                Else
                    Set plgCouleur = Application.Union(Plage, plgCouleur)
                End If
            End If
        Next
        'travail en ligne
        For Each Plage In sh.UsedRange.Rows
            If IsNull(Plage.Font.ColorIndex) Then
                For Each Cell In Application.Intersect(Plage, plgCouleur).Cells
                    If Cell.Font.ColorIndex = 33 Then
                        Cell.Value = 0
                    End If
                Next
            End If
        Next
    Next sh
End Sub

Adaptation d'une macro trouvée ici

A+
 
Dernière modification par un modérateur:
Re : For each / next

Re,

Je viens de me rendre compte que j'avais fait la même erreur que toi PierreJean😉 Interior.ColorIndex au lieu de Font.Colorindex.

La macro de mon précédent post est corrigée, mais je ne l'ai pas testée avec Font. A voir....

[Edit] c'est fait j'ai testé et ça fonctionne.

A+
 
Re : For each / next

Bonjour julien,
pierrejean 🙂
Hasco🙂

Je propose ceci:

Code:
Sub Macro1()
Dim C As Range
For Each sh In Sheets
  Application.FindFormat.Font.ColorIndex = 33
  sh.UsedRange.Replace What:="", Replacement:="0", LookAt:=xlPart, SearchOrder:= _
      xlByRows, MatchCase:=False, SearchFormat:=True, ReplaceFormat:=False
Next sh
End Sub
Edit: petite modification dans le code😉
 
Dernière édition:
Re : For each / next

Re,

A pierrejean,

Dans ce cas je présume que la boite de dialogue Rechercher/Remplacer ne te propose pas la sélection du format en cliquant sur le bouton option (à condition que ce bouton là existe!).

Bonne soirée,
Amitiés🙂
 
Re : For each / next

Bonsoir à tous mes bienfaiteurs,

Avez-vous la solution pour appliquer celà à des Shapes (chacune ayant un nom) ?

du genre
Code:
dim s as (et là je ne sais pas quoi)
For each s in (là non plus)
   instructions sur leur couleur de chaque shape (là, je sais)
next s

Merci d'avance

Gruick
 
Re : For each / next

Re

@ skoobi

Effectivement la boite Rechercher/Remplacer n'evoque pas le format et n'a pas de bouton Option . Quant a Application , la liste ne comprend qu'un .Findfile
Attention les djeunes !! vous ne savez pas ce qui vous attend (a propos la flemme n'est pas une maladie !!)
 
Re : For each / next

Re

@ skoobi

Effectivement la boite Rechercher/Remplacer n'evoque pas le format et n'a pas de bouton Option . Quant a Application , la liste ne comprend qu'un .Findfile
Attention les djeunes !! vous ne savez pas ce qui vous attend (a propos la flemme n'est pas une maladie !!)

Qu'est-ce que tu nous conseilles pierrejean afin de ne pas en arriver là?😀
 
- 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
286
Retour