Onglet déjà existant " " renommer " " onglet incrémente 1,2 ou 3 etc

Bonjour à tous,

Je vous remercie par avance pour votre aide. Je prends juste quelque minute pour vous expliquer que mon projet.

J’ai créé une macro avec un user Form qui me permet d’insérer des fiches clients en appuyant sur un bouton.

Mon formulaire est composé de Textbox ou je renseigner les informations client qui lors du lancement du formulaire les informations clients s’insère dans une feuille Excel afin de constituer une fiche clients dans un classeur Excel.

Ainsi pour chaque feuille Excel une fiche client apparait et est renommer avec le N° d’agence & le nom du client.

Mon problème est le suivant à chaque fois qu’un Homonyme client est ajoute au classeur « Erreur d'exécution '1004 "Désolé... Ce nom est déjà attribué. Veuillez utiliser un autre nom". »

J’aimerais une ligne de code qui permettrais de déterminer le nom de l'onglet en fonction des autres. Par exemple, avant d'ajouter le nom au nouvel onglet, la fonction fait une boucle sur les onglets existants et compte ceux qui ont le même numéro et nom (peut-être avec la fonction Instr pour garder les choses simples et rapides).

Ainsi si le nom du nouveau client qui existe déjà alors insérer le même N° d’agence & Nom et incrémente 1,2 ou 3 entre ().

Voilà ou j’en suis pour le moment .

With ws_onglet

.Cells(2, 2) = val_nom

.Cells(1, 1) = Val_agence

End With

With ws_onglet

.Name = Val_agence & " " & val_nom

End With

Exemple (413 Moussa)

Erreur d'exécution '1004 "Désolé... Ce nom est déjà attribué. Veuillez utiliser un autre nom". »

413 moussa (2) et ainsi de suite 413 moussa (2) Existe déjà alors renommer nouvel onglet 413 moussa (3) etc.

Bonjour, votre base de données ne contient pas de "code" ou ne numéro client ?

L'ajout de ce numéro si existant pourrait résoudre votre problème.

RE:

Non elle ne contient pas de code ni de N° client.

Je veut tous simplement incrémenter un 1 2 ou 3 derrière chaque ajout de mon formulaire je vous met des images et mon formulaire en pièces jointe;

J'aimerais juste avoir si jamais j'ai un Homonyme client.

J'aimerais que une boucle qui recherche si

Par exemple Belama (1) quand l'erreur 1004 se produit.

Bonjour,

"j'aimerai juste" ... c'est bien là la difficulté. il n'y a pas d'historique du numéro déjà utilisé ; donc si la macro fonctionne une première fois pour un homonyme ;

comment Excel peut-il savoir quel chiffre utiliser ensuite 1 ou 2 ou 3 ...?

Bonjour,

Tu peux sans doute t'aider de ça :

9dekim.xlsm (22.02 Ko)

Sans fichier exemple, j'ai fais une version où les "Val_agence" et "Val_nom" sont sur la Feuil 1.

Si le "NameSheet" existe, => NameSheet + suffixe (incDoublon)
Si NameSheet + suffixe (incDoublon) existe, alors incDoublon + 1

A+

Bonsoir à tous,

A tout hazard, pour t'aider

Sheets.Add(, Sheets(Sheets.Count)).Name = Application.InputBox("Nom Onglet", "Renommez la feuille", "(" & Sheets(Sheets.Count).Index + 1 & ")", , , , , 2)

klin89

Bonjour ,

Je vous remercie pour vos réponses !

Désoler pour le manque d'information. J'ai effectuer un formulaire celui que vous voyez ci-dessous. je remplis ce formulaire avec les informations clients (Noms ; prénom ; date ; matricule ; agence ; ref etc...).

Une fois le formulaire rempli je click sur "Ajouter saisie", ensuite mon code me redirige vers mes documents a l'aide du lien insérer dans mon code. (module= liste classeur).

'Mes fiches clients son organiser par classeur Excel. Chaque classeur Excel porte un N° d'agence.

Ensuite, je sélectionne un classeur agence dans le quelle je veux ajoute ma fiche client.

Geof52 À un peu près compris ce que je recherche a faire !

Etape 1

image

Etape 2

image

Étape 3 insertion de la fiches client dans le classeur sélectionner

image image

Quand je click sur débogage le code me redirige sur cette ligne de code je pense que c'est là ou se trouve l'erreur.

image

Et quand je fais fin la feuille d'ajoute mais n'est pas nommer ! a cause la feuille déjà existante !

image

Mon problème est le suivant lorsque renseigne mon formulaire et que j'ajoute la saisie dans un de mes classeur il se peut que j'ai un homonyme dans le classeur sélectionner j'aimerais un code qui avant d'ajouter le nom au nouvel onglet, face une boucle sur les onglets existants du classeurs et recherche ceux qui ont le même numéro et nom ; Et si c'est le cas le code incrémente un numéro derrière le nom de l'onglet 1 2 ou 3.

Merci par avance pour votre aide.

Bonjour,

Sans avoir acces a un exemple du fichier appelé grace a "liste classeur", je pense qu'on sera bloqué.

Mais si mon dernier message convient plus ou moin, essai de modifier (au niveau de 'renommer la feuille)

With ws_onglet

NameSheet = Val_agence & " " & Val_nom
Verif_Doublon_Onglet
.Name = NameSheet

End With

Et tu rajoute un nouveau module Verif_Doublon avec ça :

Public Val_agence As Integer
Public Val_nom As String
Public NameSheet As String
Public IncDoublon As Integer

Sub Verif_Doublon_Onglet()
IncNext:  'Incrementation suivante
FeuilExist = IsFeuilleExiste(NameSheet)
If FeuilExist = True Then
    If InStr(1, NameSheet, " - ") Then
        IncDoublon = IncDoublon + 1
        NameSheet = Mid(NameSheet, 1, InStr(1, NameSheet, " - ") - 1)
    Else
        IncDoublon = 1
    End If
    NameSheet = NameSheet & " - " & IncDoublon
    GoTo IncNext
End If
End Sub

Function IsFeuilleExiste(NameSheet As String) As Boolean
On Error Resume Next
Dim Sh As Variant
IsFeuilleExiste = False
For Each Sh In Worksheets
If Sh.Name = NameSheet Then IsFeuilleExiste = True
Next
End Function

A+

Goef 52 je te remercie j'ai essayer !? ça ne fonctionne pas .... J'ai ça comme erreur ??

image
image

ça a fonctionner !! Enfaite j'ai nommer le module de la même façon que la variable c'est pour ça ! ☺

Merci beaucoup Goef52 !!

RE : GOEF52

Désolée de te resolliciter,

Est-ce que tu pourrais mettre entre parenthèse ( ) au lieu d'un " - " dans ton code ?stp

J'ai essayer ça mais le soucis c'est que le +1 ne fonctionne pas ça donne ça :

Exemple : 011 DANTE (1) et si je recrée la même feuille 011 DANTE (1) (1) au lieu de 011 DANTE (2) etc..

Sub Verif_Doublon_Onglet()

IncNext: 'Incrementation suivante

FeuilExist = IsFeuilleExiste(NameSheet)

If FeuilExist = True Then If InStr(1, NameSheet, " - ") Then

IncDoublon = IncDoublon + 1 NameSheet = Mid(NameSheet, 1, InStr(1, NameSheet, " - ") - 1)

Else

IncDoublon = 1

End If

NameSheet = NameSheet & " (" & IncDoublon &")" 'j'ai essayer ça! çafonctionne 1 seul fois après ça me fait ça :

011 DANTE (1) (1)

GoTo IncNext

End If

End Sub

Bonjour,

Je regarde ça mais c'est normal que ça ne fonctionne pas avec le changement que tu as fait puisque la recherche de doublons est au niveau de :

    If InStr(1, NameSheet, " - ") Then

Que tu peux traduire par dans le nom cherche " - " ce que tu n'as plus.
Et ce code :

        NameSheet = Mid(NameSheet, 1, InStr(1, NameSheet, " - ") - 1)

va redéfinir le nom de l'onglet sans l'incrément (qui recherche le nombre de caractere par rapport a " - ")

Edit : Test avec ça

Sub Verif_Doublon_Onglet()
IncNext:  'Incrementation suivante
FeuilExist = IsFeuilleExiste(NameSheet)
If FeuilExist = True Then
    If InStr(1, NameSheet, " (") Then
        IncDoublon = IncDoublon + 1
        NameSheet = Mid(NameSheet, 1, InStr(1, NameSheet, " (") - 1)
    Else
        IncDoublon = 1
    End If
    NameSheet = NameSheet & " (" & IncDoublon & ")"
    GoTo IncNext
End If
End Sub

Je te remercie! ça fonctionne parfaitement ! @GEOF52

Merci pour les explications j'ai compris mon erreur !

Rechercher des sujets similaires à "onglet deja existant renommer incremente etc"