Bug sur Renommer feuille à partir d'une cellule

Yopub

XLDnaute Junior
Bonjour à toutes et à tous.
J'ai pondu une macro (en partie grâce à vous) permettant de créer une feuille à partir d'un modèle, puis de la renommer avec le contenu d'une cellule donnée (via une Msg Box). Cela fonctionnait bien jusqu'au moment où j'ai écrit un nom composé genre DURAND-DUPONT. Et là, patatra, le programme m'ouvre une fenêtre de dialogue me demandant où se situe la feuille dans l'ordi. J'ai essayé avec un espace au lieu du tiret: idem. Manuellement, les onglets acceptent pourtant des tirets ou des espaces, alors pourquoi la macro bloque-t-elle ?
Y-a-t-il une suptilité quelque part ?
Ci-dessous l'extrait de la macro :

Dim NomAgent As String
NomAgent = InputBox("Quel est le NOM de l'Agent ?")

Sheets("Modèle").Copy After:=Sheets(1)
Range("C3").FormulaR1C1 = NomAgent
ActiveSheet.Name = (NomAgent)
 

Yopub

XLDnaute Junior
Re : Bug sur Renommer feuille à partir d'une cellule

Bonjour Pierrot et merci de t'être penché sur mon cas. Ta réponse, sans en être une, m'a alerté : effectivement l'erreur de provient pas du code que j'ai indiqué auparavant, mais bien plus loin, lorsque je demande au programme d'écrire une formule dans une cellule. Formule qui fait référence à une cellule d'une autre feuille. Feuille renommée par la macro que tu connais.
Je colle ci-dessous le début de la macro jusqu'au pas qui coince :

Sub NouvelAgent()
'
' NouvelAgent Macro
'
'Positionne le curseur dans la colonne Agent

Range("b4").Select
'
Dim NomAgent As String
NomAgent = InputBox("Quel est le NOM de l'Agent ?")

'Permet de trouver la 1ère ligne vide du tableau dans la colonne B et d'y coller le nom de l'agent

Range("B29").End(xlUp).Offset(1, 0).Range("A1").FormulaR1C1 = NomAgent

'Rend visible la feuille Modèle en vue de copiage
Sheets("Modèle").Visible = True

'Crée une feuille à partir du modèle et le renomme avec le nom de l'agent
Sheets("Modèle").Copy After:=Sheets(1)
Range("C3").FormulaR1C1 = NomAgent
Application.ScreenUpdating = False
ActiveSheet.Name = (NomAgent)

'Masque la feuille Modèle
Sheets("Modèle").Visible = False

'Précise le type de contrat
Mensualité = MsgBox("L'agent sera-t-il mensualisé ?", vbYesNo)

If Mensualité = vbYes Then
Range("B26") = True

End If

'Précise si titulaire ou non
Titulaire = MsgBox("L'agent est-il titulaire ?", vbYesNo)

If Titulaire = vbYes Then
Range("B10") = True

End If

'Copier les références mensuelles dans la feuille "Récap"
Dim RéfNomAgent As Range

'Sélectionne la ligne de NomAgent pour la copie des références mensuelles
Sheets("Récap").Select

'Afin de copier les données en dessous du dernier agent, il faut aller en bout de tableau et remonter
Set RéfNomAgent = Range("B27").End(xlUp).Offset(0, 0).Range("A1:Z1")
RéfNomAgent.Select

'Recopier le type de contrat (mensuel ou horaire) dans la ligne définie
ActiveCell.Offset(0, 2).Formula = "=if(" & NomAgent & "!$b$10=false, IF(" & NomAgent & "!$B$26=FALSE,""Horaire"",""Mensualisé à""),""Titulaire"")"

LA, CA COINCE ! et après (ci-dessous) aussi. C'est quoi le problème ? A bientôt...

'Recopier le nombre d'heures mensuelles si mensualisé
ActiveCell.Offset(0, 3).Formula = "=IF(" & NomAgent & "!$B$26=TRUE," & NomAgent & "!$F$26,"" "")"
 

Pierrot93

XLDnaute Barbatruc
Re : Bug sur Renommer feuille à partir d'une cellule

Re,

comprends pas trop... ces lignes fonctionnent en l'état chez moi :
Code:
Dim NomAgent As String
NomAgent = "Feuil1"
ActiveCell.Offset(0, 2).Formula = "=if(" & NomAgent & "!$b$10=false, IF(" & NomAgent & "!$B$26=FALSE,""Horaire"",""Mensualisé à""),""Titulaire"")"
ActiveCell.Offset(0, 3).Formula = "=IF(" & NomAgent & "!$B$26=TRUE," & NomAgent & "!$F$26,"" "")"
 

Yopub

XLDnaute Junior
Re : Bug sur Renommer feuille à partir d'une cellule

?!? Alors là, comprends pas. Moi ça veut pas prendre des noms composés.
Je vais mener plus loin l'investigation. Au cas où, je joindrais le fichier complet, avec la macro.
A bientôt, merci.
 

Yopub

XLDnaute Junior
Re : Bug sur Renommer feuille à partir d'une cellule

AYE ! J'ai trouvé le problème. De la syntaxe pour ne pas changer. Si l'on écrit une formule du type :
"=if(" & NomAgent & "!$b$10=false, IF(" & NomAgent & "!$B$26=FALSE,""Horaire"",""Mensualisé à""),""Titulaire"")"
si le NomAgent (qui est le nom d'une feuille) est un mot composé, la feuille n'est pas trouvée. Pour éviter cela, il faut ajouter des ' avant et après le nom de la feuille. Cela donne :
"=if(" & "'" & NomAgent & "'" & "!$b$10=false, IF(" & "'" & NomAgent & "'" & "!$B$26=FALSE,""Horaire"",""Mensualisé à""),""Titulaire"")"
C'est simple, (mais fastidieux !).
 

Discussions similaires

Statistiques des forums

Discussions
312 606
Messages
2 090 183
Membres
104 441
dernier inscrit
Dobbzzz