Bonjour le forum, vous allez bien ?
Je ne dois pas être le premier à avoir le problème ci-dessous, suis sûr qu'il doit y avoir des post là-dessus, mais ça fait une heure que je cherche sans trouver... Donc voici ma question.
Le but de ma macro événement SheetActivate est que, quand on copie une feuille, la feuille "TOTAL RENTREE" reçoive une série de formule en ligne 5.
Cela fonctionne parfaitement quand on active une feuille dont le sheet.name ne contient pas de caractère spécial.
Mais dès que le nom de ma feuille contient un blanc ou une parenthèse, je reçois "Erreur 1004. Erreur définie par l'application ou par l'objet".
Or, quand on fait une copie, automatiquement cette copie reçoit dans son nom un blanc et un numéro entre parenthèses. Ex. "BURINS (3)"
Je joins un fichier de test.
et voici aussi le code incriminé:
L'erreur se produit sur chaque ligne à partir de .Range("A5").FormulaR1C1 = "=" & ActiveSheet.Name & "!R1C23"
A noter,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 Private Sub Workbook_SheetActivate(ByVal Sh As Object) Dim FOrigine As Worksheet 'est la feuille d'origine Set FOrigine = Sh Debug.Print "FOrigine.name = " & FOrigine.Name Debug.Print "Activesheet.name = " & ActiveSheet.Name Select Case True Case ActiveSheet.Name = "TOTAL RENTREE" Or ActiveSheet.Name = "NC" Or ActiveSheet.Name = "!!!!!" 'Ne rien faire si on active l'une de ces feuilles, surtout si on vient d'activer TOTAL RENTREE !! Case Else Application.DisplayAlerts = False With Sheets("TOTAL RENTREE") '.Range("A5").FormulaR1C1 = "=" & "BURINS (3)" & "!R1C23" .Range("A5").FormulaR1C1 = "=" & ActiveSheet.Name & "!R1C23" .Range("B5").FormulaR1C1 = "=" & ActiveSheet.Name & "!R3C4" .Range("C5").FormulaR1C1 = "=" & ActiveSheet.Name & "!R1C4" .Range("D5").FormulaR1C1 = "=" & ActiveSheet.Name & "!R1C3" .Range("E5").FormulaR1C1 = "=" & ActiveSheet.Name & "!R1C7" .Range("F5").FormulaR1C1 = "=" & ActiveSheet.Name & "!R2C7" .Range("G5").FormulaR1C1 = "=" & ActiveSheet.Name & "!R3C7" .Range("H5").FormulaR1C1 = "=" & ActiveSheet.Name & "!R4C7" .Range("I5").FormulaR1C1 = "=" & ActiveSheet.Name & "!R1C9" .Range("J5").FormulaR1C1 = "=" & ActiveSheet.Name & "!R2C9" .Range("K5").FormulaR1C1 = "=" & ActiveSheet.Name & "!R3C9" .Range("L5").FormulaR1C1 = "=" & ActiveSheet.Name & "!R4C9" .Range("M5").FormulaR1C1 = "=" & ActiveSheet.Name & "!R1C11" .Range("N5").FormulaR1C1 = "=" & ActiveSheet.Name & "!R2C11" .Range("O5").FormulaR1C1 = "=" & ActiveSheet.Name & "!R3C11" .Range("P5").FormulaR1C1 = "=" & ActiveSheet.Name & "!R4C11" .Range("R5").FormulaR1C1 = "=" & ActiveSheet.Name & "!R1C14" .Range("S5").FormulaR1C1 = "=" & ActiveSheet.Name & "!R2C14" .Range("T5").FormulaR1C1 = "=RC[-2]-RC[-1]" .Range("U5").FormulaR1C1 = "=" & ActiveSheet.Name & "!R1C16" .Range("V5").FormulaR1C1 = "=" & ActiveSheet.Name & "!R2C16" .Range("W5").FormulaR1C1 = "=" & ActiveSheet.Name & "!R3C14" End With Application.DisplayAlerts = True End Select End Sub
si j'écris en dur comme dans la ligne 14 ci-dessus qui est commentée (donc si je remplace la variable par "BURINS (3)"
--> je reçois la même erreur 1004. Donc ce sont bien les blancs et parenthèses qui posent problème.
Quelqu'un a-t-il une solution? Un contournement ? Un post dans le forum ?
Merci d'avance !
Partager