Bonjour
J'aimerai en une seule instruction réduire ce bout de codemais je n'y arrive pas.Code:
1
2 Range("D17").Copy ActiveCell.Cells.PasteSpecial Paste:=xlFormats
Quelqu'un aurait-il une idée. Merci d'avance
Version imprimable
Bonjour
J'aimerai en une seule instruction réduire ce bout de codemais je n'y arrive pas.Code:
1
2 Range("D17").Copy ActiveCell.Cells.PasteSpecial Paste:=xlFormats
Quelqu'un aurait-il une idée. Merci d'avance
Bonjour,
Il n'est pas possible d'avoir une seule instruction pour faire 2 actions élémentaires.
Tu seras obligé de
- Copier
- Coller
Que cherches-tu à faire exactement? Car ici tu copie-colles le format d'une cellule sur elle-même.
Code:
1
2 Range("D17").Copy ActiveCell.PasteSpecial Paste:=xlFormats
Merci de ta réponse. Je voulais justement ne faire qu'une instruction, comme quand on copie le contenu d'une cellule. Mon code est dansoù je teste si je suis dans une certaine cellule.Code:Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Je vais donc être obligé de mettre ces instructions dans un module, sinon, ca boucle plusieurs fois.
dommage
Je ne comprends pas ce que tu veux faire lorsque tu changes de feuille.
Mais je pense que mettre le code dans un module ne changera pas le fond du problème.
Explique-moi ce que tu cherches à faire, ce sera plus simple.
Que veux-tu dire par?Citation:
ca boucle plusieurs fois.
Quand j'exécute le code pas à pas, je constate que si je mets ces deux lignes dansl'instruction s'exécute un certain nombre de fois avant de passer à la cellule voisine.Code:
1
2 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Column = 4 And Left(ActiveSheet.Name, 8) <> "Horaires" And Target.Column = 4 And Left(ActiveSheet.Name, 10) <> "9 Horaires" Then range(D17).copy: ActiveCell.Cells.PasteSpecial Paste:=xlFormats: Target(1, 2).Select
Code:
1
2
3
4
5
6
7
8
9
10
11
12 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Column = 4 Then If Left(Sh.Name, 8) <> "Horaires" And Left(Sh.Name, 10) <> "9 Horaires" Then Range("D17").Copy Application.EnableEvents = False Target.PasteSpecial Paste:=xlFormats Application.EnableEvents = True Application.CutCopyMode = False Target(1, 2).Select End If End If End Sub
Je crois avoir compris.
En fait lorsque tu changes quelque chose sur ta feuille, le programme fait son boulot.
Or le programme lui-même modifie quelque chose d'autre sur la feuille => il voit à nouveau qu'une modification est faite et donc refait son boulot et ainsi de suite.
Mais tu peux heureusement stoper ses réactions le temps de la modification et reprendre son activité ensuite grâce à:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Column = 4 And _ Left(ActiveSheet.Name, 8) <> "Horaires" And _ Target.Column = 4 And _ Left(ActiveSheet.Name, 10) <> "9 Horaires" _ Then ActiveSheet.Range("F8").Copy Application.EnableEvents = False ActiveCell.PasteSpecial Paste:=xlFormats Application.EnableEvents = True Target(1, 2).Select End If End Sub
Arrrrgggghhhhh...
T'es trop rapide mercatog :aie::ccool:
Merci Mercatog, buzz73. Bonne soirée.