chercher onglet avec une partie du nom

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

  • Classeur1.xls
    37 KB · Affichages: 55
  • Classeur1.xls
    37 KB · Affichages: 55
  • Classeur1.xls
    37 KB · Affichages: 59

laurent950

XLDnaute Accro
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
 

alfazoulou

XLDnaute Occasionnel
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".
 

CHALET53

XLDnaute Barbatruc
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
 

pierrejean

XLDnaute Barbatruc
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
 

Si...

XLDnaute Barbatruc
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
 

job75

XLDnaute Barbatruc
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

  • Avenants(1).xls
    40.5 KB · Affichages: 53
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 276
Messages
2 086 711
Membres
103 377
dernier inscrit
fredy45