erreur 1004 à cause de blancs et parenthèses dans les noms des feuilles copiées
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"
Code:
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 |
A noter,
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 !