VBA Excel : Reproduction de mise en forme
Zawzou
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour à tous,
J'étais déjà là hier et me voilà avec un nouveau soucis qui me bloque, je vous expose mon code :
------
Le but étant donc de reproduire la mise en forme d'une colonne si à sa ligne 5 il y a un L, et de la reproduire de partout sur les colonnes où à la ligne 5 il y a un S. Et la même chose si à la ligne 5 il y a un M que sa mise en forme soit reproduite sur les colonnes où à la ligne 5 il y a un D...
Le soucis est que pour ma première formule ça fonctionne très, dès qu'on passe à la seconde ça ne fonctionne plus, j'ai plusieurs formules de ce genre à la suite et peut importe celle que je mets le débogage se met sur :
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Et je ne comprend pas pourquoi... J'ai testé si la copie se faisait bien et ça fonctionne, c'est vraiment au moment du collage qu'il y a un problème. Mais pourquoi cela fonctionne pour la première formule et pas la seconde ?
J'étais déjà là hier et me voilà avec un nouveau soucis qui me bloque, je vous expose mon code :
Dim i As Integer For i = 3 To 198 Worksheets("1er semestre").Activate If Worksheets("1er semestre").Cells(5, i).Text = "L" Then ActiveSheet.Cells(5, i).EntireColumn.Select Selection.Copy End If If Worksheets("1er semestre").Cells(5, i).Text = "S" Then Worksheets("1er semestre").Select ActiveSheet.Cells(5, i).EntireColumn.Select Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False End If Next i Dim j As Integer For j = 3 To 198 If Worksheets("1er semestre").Cells(5, j).Text = "M" Then Worksheets("1er semestre").Select ActiveSheet.Cells(5, j).EntireColumn.Select Selection.Copy End If If Worksheets("1er semestre").Cells(5, j).Text = "D" Then Worksheets("1er semestre").Select ActiveSheet.Cells(5, j).EntireColumn.Select Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False End If Next j
------
Le but étant donc de reproduire la mise en forme d'une colonne si à sa ligne 5 il y a un L, et de la reproduire de partout sur les colonnes où à la ligne 5 il y a un S. Et la même chose si à la ligne 5 il y a un M que sa mise en forme soit reproduite sur les colonnes où à la ligne 5 il y a un D...
Le soucis est que pour ma première formule ça fonctionne très, dès qu'on passe à la seconde ça ne fonctionne plus, j'ai plusieurs formules de ce genre à la suite et peut importe celle que je mets le débogage se met sur :
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Et je ne comprend pas pourquoi... J'ai testé si la copie se faisait bien et ça fonctionne, c'est vraiment au moment du collage qu'il y a un problème. Mais pourquoi cela fonctionne pour la première formule et pas la seconde ?
A voir également:
- VBA Excel : Reproduction de mise en forme
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel compter cellule couleur sans vba - Guide
1 réponse
Bonjour,
Suggestion :
désolé, plusieurs modifs :-)
Cdt
Lupin
Suggestion :
Sub MiseEnForme() Dim i As Integer, j As Integer Application.ScreenUpdating = False With Worksheets("1er semestre") For i = 3 To 198 If (.Cells(5, i).Value = "L") Then .Cells(5, i).EntireColumn.Select Selection.Copy For j = (i + 1) To 198 If (.Cells(5, j).Value = "S") Then .Cells(5, j).EntireColumn.Select Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False End If Next j Application.CutCopyMode = False End If Next i For i = 3 To 198 If (.Cells(5, i).Value = "M") Then .Cells(5, i).EntireColumn.Select Selection.Copy For j = (i+1) To 198 If (.Cells(5, j).Value = "D") Then .Cells(5, j).EntireColumn.Select Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False End If Next j Application.CutCopyMode = False End If Next i .Cells(1, 1).Select End With Application.ScreenUpdating = True End Sub '
désolé, plusieurs modifs :-)
Cdt
Lupin