Mise en forme d'une plage de cellule

Résolu/Fermé
Danette - 6 oct. 2015 à 19:12
 Danette - 7 oct. 2015 à 12:23
Bonjour,

Je voudrais mettre en forme une plage de cellule.
A l'origine j'y arrive, mais ce qui est compliqué dans mon cas (du moins ce que je n'arrive pas à faire) c'est que reporte des informations sur x lignes, ensuite la ligne x+1 je veux faire un total et mettre en forme cette même ligne x+1.
Ce que je ne comprends pas c'est qu'avec la macro que j'ai écrite il me met en forme beaucoup de ligne que je le souhaite.

Voici ce que j'ai écrit :
 'Renseignement de l'inventaire production
    If Nr_entrepot = Worksheets("Inventaire").Cells(i, 2) And (Worksheets("Inventaire").Cells(i, 5) = Worksheets("Base_de_donnees").Range("H2").Value) Then
    
        Cells(2, 1) = "Production"          'Nom Partie Porduction
        'Mise en forme titre partie
        Range("A2:H2").Select
        Selection.Font.Bold = True
        With Selection.Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlauomatic
            .Color = 10092543
            .TintAndShade = 0
            .PatternTintAndShade = 0
        End With
        With Selection.Font
            .Name = "Arial"
            .Size = 11
            .Strikethrough = False
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .ThemeColor = xlThemeColorLight1
            .TintAndShade = 0
            .ThemeFont = xlThemeFontNone
        End With
        Cells(3 + y, 1) = Worksheets("Inventaire").Cells(i, 1)      'Nom de l'entrepôt
        Cells(3 + y, 2) = Worksheets("Inventaire").Cells(i, 5)      'Type d'installation
        Cells(3 + y, 3) = Worksheets("Inventaire").Cells(i, 3)      'CODE
        Cells(3 + y, 4) = Worksheets("Inventaire").Cells(i, 6)      'Désignation
        Cells(3 + y, 5) = Worksheets("Inventaire").Cells(i, 7)      'Fabricant
        Cells(3 + y, 6) = Worksheets("Inventaire").Cells(i, 8)      'Désignation type
        Cells(3 + y, 7) = Worksheets("Inventaire").Cells(i, 12)    'Numéro de série
        Cells(3 + y, 8) = ""
        
        y = y + 1
        
        'Mise en place de ligne Total
        Cells(3 + y, 1) = "Total Maintenance Production positive"  'Ligne total
            'Mise en forme total partie
'            Range(Cells(3 + y, 1), Cells(3 + y, 8)).Select
'            Selection.Font.Bold = True
'            With Selection.Interior
'                .Pattern = xlSolid
'                .PatternColorIndex = xlauomatic
'                .Color = RGB(0, 0, 0)
'                .TintAndShade = 0
'                .PatternTintAndShade = 0
'            End With
'            With Selection.Font
'                .Name = "Arial"
'                .Size = 11
'                .Strikethrough = False
'                .Superscript = False
'                .Subscript = False
'                .OutlineFont = False
'                .Shadow = False
'                .Underline = xlUnderlineStyleNone
'                .Color = RGB(255, 255, 255)
'                .TintAndShade = 0
'                .ThemeFont = xlThemeFontNone
'            End With
        
                
    End If


C'est toute cette partie du bas (en commentaire) qui ne fonctionne pas, ou mal. EN gros ça me met en forme à partir de la 3ème ligne juqu'à la ligne que je viens de créer (TOTAL).
Comme vous pourrez peut-être le voir la partie qui ne marche pas a été enregistrée, je pense qu'il y a plus simple, mais je ne sais pas le simplifier, c'est pour cela que le code paraît un peu lourd.

Si vous avez des questions, si vous voulez que j'apporte des précisions... N'héisitez pas !!!

Je vous remercie d'avance !!!

2 réponses

Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
7 oct. 2015 à 07:25
Bonjour
Votre code est incomplet, si vous incrémentez "y", c'est que vous l'avez mis dans une boucle, or, on ne voit pas quand elle se termine. Après l'incrémentation de "y"," y = y+1", normalement après la ligne il devrait y avoir un "loop". Actuellement, comme vous l'avez fait, vous reproduisez la mise en forme sur chaque ligne.
Cdlt
0
Effectivement je ne l'ai pas copié, mais j'ai une boucle avec for tel que suit :
For i = 2 To 5000
'Instructions
Next


Ca me fait un peu peur d'intégrer une boucle dans une autre.
Pour info je viens de tester avec une boucle "do while" "loop" et le problème est le même du coup.

Je pense que le problème vient de la sélection à mettre en forme, mais je ne vois pas où.

Merci de ton aide en tous les cas.
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
7 oct. 2015 à 12:03
Ou est le next? après ou avant la ligne
Cells(3 + y, 1) = "Total Maintenance Production positive  'Ligne total
comme je vous l'ai dit auparavant, il doit se trouver avant.
0
Effectivement cette ligne était comprise dans la boucle.
Je viens de la sortir et maintenant ça fonctionne parfaitement.

Merci beaucoup.

A bientôt (je pense :) )
0