chercher onglet avec une partie du nom

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

alfazoulou

XLDnaute Occasionnel
Bonjour,
je voudrais copier l'onglet "avenant" juste après celui-ci et le renommer "avenant 1"
jusque là pas de problème :
Worksheets("avenant").Select
ActiveSheet.Copy , Worksheets("avenant")
ActiveSheet.Name = "avenant 1"
comment faire ensuite pour refaire des copies de "avenant" les renommer "avenant 2", 3,4,5 etc et les placer à la suite de la dernière créée.

merci pour votre aide
 

Pièces jointes

Re : chercher onglet avec une partie du nom

Bonjour,

peut être cette solution mais il y surment plus simple

Private Sub CommandButton1_Click()

For i = 1 To 5
Worksheets("avenant").Select
ActiveSheet.Copy , Before:=Worksheets("avenant")
ActiveSheet.Name = "avenant" & i
Next i

' Replace la Feuille a sont poin de départ
Sheets("avenant").Move Before:=Sheets("avenant1")

End Sub

Laurent
 
Re : chercher onglet avec une partie du nom

merci Laurent
mais ta solution copie et renomme 5 onglets d'un coup alors qu'il doivent être copiés séparément à n'importe quel moment.
Mon problème se résume à dire de faire une copie de la feuille "avenant" de placer cette copie après la dernière copie existante de la feuille "avenant", par exemple "avenant 5" et de nommer cette nouvelle copie "avenant 6".
 
Re : chercher onglet avec une partie du nom

Oui, essaie pas à pas ce petit programme

Sub test()
b = 0
For Each sht In ActiveWorkbook.Sheets
a = sht.Name

If Val(Right(a, 1)) > Chr(48) And Val(Right(a, 1)) < Chr(58) Then
If Val(Right(a, 1)) > b Then b = Val(Right(a, 1))
End If
Next
rang = b + 1
' le nom de ta feuille à créer sera : "avenant" & rang
End Sub
 
Re : chercher onglet avec une partie du nom

Bonjour alfazoulou

Salut CHALET53

Une autre approche

Code:
Sub copie()
Sheets("avenant").Copy after:=Sheets(Sheets.Count)
ActiveSheet.Name = "provisoire"
For Each sh In Sheets
 If InStr(sh.Name, "avenant") Then
  n = n + 1
 End If
Next
Sheets("provisoire").Name = "avenant" & n
If n - 1 <> 0 Then
 Sheets("avenant" & n).Move after:=Sheets("avenant" & n - 1)
Else
 Sheets("avenant" & n).Move after:=Sheets("avenant")
End If
End Sub
 
Re : chercher onglet avec une partie du nom

salut
Si..., une de plus
Code:
Option Explicit
Sub copie()
  Dim sh As Worksheet, n As Byte
  For Each sh In Sheets
    If sh.Name Like "avenant" & "*" Then n = n + 1
  Next
  If n = 1 Then
    Sheets("avenant").Copy after:=Sheets("avenant")
    ActiveSheet.Name = "avenant1"
  Else
    Sheets("avenant" & n - 1).Copy after:=Sheets("avenant" & n - 1)
    ActiveSheet.Name = "avenant" & n
  End If
End Sub
 
Re : chercher onglet avec une partie du nom

Bonjour le fil,

Perso j'utiliserais plutôt ceci :

Code:
Sub CreerAvenant()
Dim s As Object, n%, maxi%, F As Object
For Each s In Sheets
  If s.Name Like "avenant*" Then
    n = Val(Replace(s.Name, "avenant", ""))
    If n >= maxi Then
      maxi = n
      Set F = s
    End If
  End If
Next
If F.Index < Sheets.Count Then F.Move After:=Sheets(Sheets.Count)
Sheets("avenant").Copy After:=F
ActiveSheet.Name = "avenant" & " " & maxi + 1
End Sub
Pour les cas particuliers du fichier joint.

A+
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

M
Réponses
2
Affichages
954
marcenana
M
Retour