Créer X copie de feuilles mais annuler si elle existe déjà

Bonsoir,

Je cherche a créer X copie d'une feuille. Ce que "j'arrive à faire"

La méthode est de copier puis de renommer.

Cela fonctionne tant que la feuille n'existe pas ( On Error Resume Next, ca aide bien ) mais la boucle me fait des Feuil(X) alors que je veux des Feuil & j...pas finir par du Feuil & j (1); Feuil & j (2); Feuil & j (3).

Au vue du code que j'ai trouvé pour mon besoin et adatpé, je pense que tester l’existence d'une feuille avant de faire une copie est la meilleur solution.

Le code actuel , copie la feuil et la renomme.

Je n'ai rien contre la remise en cause du code initiale ou d'une modification de celui-ci, j'ai vu qui y a des "Function" mais je n'ai pas réussi à appliquer les exemples.

Sub CopySheetRename()
Dim Cpt As Byte

For Cpt = 1 To 5

With ActiveWorkbook.ActiveSheet
  .Copy After:=Worksheets(Worksheets.Count)
End With
'copie la feuille
On Error Resume Next 'On Error Resume Next pour dépanner, mais j'ai pas le résultat voulu non plus...
'renomme la feuille
ActiveSheet.Name = "TE " & Format(Cpt, "0")
Sheets("TE " & Cpt).Tab.ColorIndex = 6

Next Cpt

End Sub

Merci d'avance

Cdt

Function feuilleExiste(nomTeste as String) as Boolean
feuilleExiste = False
For each uneFeuille in ThisWorkbook.Sheets
If uneFeuille.Name = nomTeste Then feuilleExiste = True : Exit Function
Next uneFeuille
End Function

Voilà un code pour tester l'existence d'une feuille dans ton classeur

Bonsoir,

Bonsoir d3d9x

une solution possible

Sub CopySheetRename()
    Dim Cpt As Byte

    For Cpt = 1 To 5
        t = False
        On Error Resume Next
        t = Sheets("TE " & Format(Cpt, "0")).Name = "TE " & Format(Cpt, "0") ' t est vrai si feuille existe
        On Error GoTo 0
        If t = False Then
            With ActiveWorkbook.ActiveSheet
                .Copy After:=Worksheets(Worksheets.Count)
            End With
            'copie la feuille
            On Error Resume Next    'On Error Resume Next pour dépanner, mais j'ai pas le résultat voulu non plus...
            'renomme la feuille
            ActiveSheet.Name = "TE " & Format(Cpt, "0")
            On Error GoTo 0
            Sheets("TE " & Cpt).Tab.ColorIndex = 6
        End If
    Next Cpt
End Sub

Merci a vous.

J'ai préféré " pour le moment " ta proposition h2so4 malgré que j'ai pas encore bien compris comment cela fonctionne.

d3d9x, j'ai passé 1h 1h30 a chercher comment utiliser cette "function" (j'aurai du le dire que je l'avais sous la main sans savoir l'utiliser). Ce n'est pas la première fois que je tombe sur une "function" qui m’intéresse mais d'habitute c'est avec tout le reste d'un code que j'adapte. Il va falloir que je me bouge et comprenne la méthode d’application.

Merci encore a vous deux. Les 2 méthodes me plaisent, il ne reste plus qu'a bien comprendre le principe de chaque ^^

Cdt

Edit :

Question 1 : On Error Goto 0 c'est quoi concrètement ? J'ai bien compris le reste mais ça...

Le "On Error Goto Next" j'ai vite compris que quand j'avais un soucis c'était une solution ( de facilité très pratique pour contourner ) mais Goto 0 ? J'ai du mal a comprendre. For 1 to 5 va à 0 si erreur, visiblement non vu que j'ai pas de 0 ^^. J'ai déjà cherché une explication clair mais sans succès, merci d'avance si vous avez ou quelqu’un d'autre a un lien clair a me proposer.

Question 2 : Quand on valide le sujet est clôt ? du moins je valide car j'ai la réponse mais je n'ai pas forcément compris la solution.

Il y a une solution pour valider la réponse au sujet mais garder ouvert la demande d'aide sur la sujet ? ( approfondir ou développer les propositions faites . )

Pour l'utiliser:

Dans un module tu fais un copier coller de la fonction. Elle n'est pas vouée à être modifiée. Sauf erreur de syntaxte de ma part (je l'ai tapé sans checker) elle n'a pas besoin d'être modifiée

Pour l'utilisation, dans une procédure ou une fonction

Sub maProcedure()
Dim nomDeFeuilleSouhaite as String
nomDeFeuilleSouhaite = "blablabla"

If feuilleExiste(nomDeFeuilleSouhaite) = True Then
'actions à faire si la feuille existe
Else
'actions à faire si la feuille n'existe pas.
End If

Désolé d3d9x mais depuis ton message je cherche à adapter mais j'arrive a rien...

Je bloque visiblement sur nomDeFeuilleSouhaite = "blablabla"

Si c'est possible de faire module fonctionnel que je comprenne ce que je comprend pas ?

Merci d'avance.

Voilà un fichier pour t'entrainer

24harissa23.xlsm (17.72 Ko)

Utilisation:

Taper un nom de feuille dans la case en jaune. Cliquer sur le bouton.

Si la feuille existe, il ne se passe (presque) rien

Si la feuille n'existe pas, elle est créée et activée.

Merci bien.

Je pense avoir compris, enfin probablement j'avais fini par comprendre ce qui déconne, j'ai un exemple d'on je connais le besoin de résultat sous les yeux, s’aide !

Je vérifierai demain. il est tard, visiblement c'est l'écriture qui déconnait "nomDeFeuilleSouhaite = Sheets("TE " & Format(Cpt, "0")).Name" ou sans Name ou autre et autres versions testés.

Je n’ai pas résolu mon erreur d'écriture pour le moment mais j'ai déjà une ou deux solution avec ton exemple pour le contourner

Merci votre aide à tous les deux !

Merci h2so4 pour la simplicité.

Merci d3d9x pour t'être fait * avec moi et m'aider sur le principe des "function"

Cordialement

N'hesite pas à me contacter par message perso si besoin

Harissa23 a écrit :

Question 1 : On Error Goto 0 c'est quoi concrètement ? J'ai bien compris le reste mais ça...

Le "On Error Goto Next" j'ai vite compris que quand j'avais un soucis c'était une solution ( de facilité très pratique pour contourner ) mais Goto 0 ? J'ai du mal a comprendre. For 1 to 5 va à 0 si erreur, visiblement non vu que j'ai pas de 0 ^^. J'ai déjà cherché une explication clair mais sans succès, merci d'avance si vous avez ou quelqu’un d'autre a un lien clair a me proposer.

"on error goto 0" sert à reactiver le mécanisme par défaut du traitement d'erreur (affichage d'une boite de dialogue avec le message d'erreur)

Question 2 : Quand on valide le sujet est clôt ? du moins je valide car j'ai la réponse mais je n'ai pas forcément compris la solution.

Il y a une solution pour valider la réponse au sujet mais garder ouvert la demande d'aide sur la sujet ? ( approfondir ou développer les propositions faites . )

tu clos le sujet quand tu estimes que tu as eu la(es) réponse(s) à ta(es) question(s).

Merci pour l'explication.

Sujet Clos.

Rechercher des sujets similaires à "creer copie feuilles annuler existe deja"