1 pièce(s) jointe(s)
Création de feuilles via VBA
Bonjour,
Je me permets de solliciter votre aide car je cherche depuis quelques jours en vain.
Je vais essayer d’exprimer clairement ma requête :
J’ai un fichier Excel avec plusieurs onglets dont le 1er onglet qui s’appelle « Projet ».
Dans cet onglet Projet, en cellule D8, j’ai le nombre d’intervenant au projet.
Je souhaiterai que, lorsque cette cellule est remplie, une macro se lance pour créer X onglet – X correspondant au nombre renseigné en cellule D8.
Cet onglet prendrait comme nom « Mandat de gestion » & le nom renseigné de l’interlocuteur. Donc :
- Pour l’onglet créé 1 : Mandat de gestion Associé 1
- Pour l’onglet créé 2 : Mandat de gestion Associé 2 etc
Là où cela se complique pour moi : il peut arriver au départ qu’il n’y ait que 2 interlocuteurs. Mais au fil du temps un ou plusieurs interlocuteur(s) s’ajoute(nt).
Si le nombre d’interlocuteur passe à 3 au lieu de 2, je souhaiterais qu’un seul nouvel onglet se créé avec le nom « Mandat de gestion Associé 3 » et qu’il n’y ait pas 3 nouveaux onglets.
De fait, je pense que dans ma macro il faut d’abord vérifier que l’onglet avec le même nom n’existe pas.
J’avais essayé un début de code mais étant très novice il doit y avoir pas mal d’erreurs (je le mets quand même ci-dessous pour info).
Je mets le classeur exemple en PJ.
Pourriez-vous m’apporter votre aide ?
Merci beaucoup par avance.
Cordialement,
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| If Range("D8") = 2 Then
For Each Sheet In Worksheets
If Sheet.Name = "Mandat de gestion " & Worksheets("Projet").Range("d19") Then
End If
Else
Sheets.Add before:=Sheets("Suite des commentaires")
With ActiveSheet
.Name = "Mandat de gestion " & Worksheets("Projet").Range("d19")
End With
If Sheet.Name = "Mandat de gestion " & Worksheets("Projet").Range("f19") Then
End If
Else
Sheets.Add before:=Sheets("Suite des commentaires")
With ActiveSheet
.Name = "Mandat de gestion " & Worksheets("Projet").Range("f19")
End With
Next
Sheets("Projet").Select
Else
If Range("D8") = 3 Then |