• Initiateur de la discussion Initiateur de la discussion loisphil
  • Date de début Date de début

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 !

loisphil

XLDnaute Nouveau
Bonjour forum,

Dans un USF j'ai le code suivant pour copier un feuil "Masque" et renommer l'onglet en fonction du nom de cellule "C5" vers un classeur avec ouverture/écriture/sauvegarde/fermeture je voudrais intégrer un code pour vérifier si cette feuil existe si c'est le cas (Msgbox info) et la renommer le cas échéant dans mon USF et re valider
J’ai essayé d'intégrer différents code sans résultats.

merci pour votre aide
phil

Code:
Private Sub Valider_Click()

Dim wkB As Workbook
Dim ctl As Object

If MSL.Value = True Then

    On Error Resume Next
    
	[COLOR="Green"]'Ouvrir le classeur MSL.xls[/COLOR]
    Set wkB = Workbooks.Open(ThisWorkbook.Path & "\MSL.xls")
    If err > 0 Then
        MsgBox "Une erreur c'est produite lors de l'ouverture du classeur MSL", n, "Copier la feuille vers MSL.xls"
        Exit Sub
    End If
    [COLOR="Green"]'Copier la feuille dans classeur MSL.xls[/COLOR]
    ThisWorkbook.Sheets("Masque").Copy After:=wkB.Sheets(Sheets.Count)  
    
	[COLOR="green"]'Changer le nom de la feuille créée[/COLOR]
    ActiveSheet.Name = ThisWorkbook.Sheets("Masque").Range("C5")
 
        [COLOR="green"]'Détruire les éventuels objets shapes  de la feuille[/COLOR]
    For Each ctl In ActiveSheet.Shapes
        ctl.Delete
    Next
 
    wkB.Save 'Sauvegarde
    wkB.Close 'Fermeture
Else
...........
 
Re : Copie feuil

Bonjour Loisphil 🙂,
Ce petit bout de code ferait-il ton bonheur ?
Code:
Dim Feuille As Worksheet, NouveauNom As String
For Each Feuille In ThisWorkbook.Worksheets
If Feuille.Name = ThisWorkbook.Sheets("Masque").Range("C5") Then
    NouveauNom = InputBox("Veuillez donner un nouveau nom pour l'onglet", "Onglet existant")
    NouveauNom = Replace(NouveauNom, "\", "_")
    '...
Else
    NouveauNom = ThisWorkbook.Sheets("Masque").Range("C5")
End If
Next
ActiveSheet.Name = NouveauNom
les ... sont à remplacer par la même ligne qu'au dessus avec les caractères spéciaux non tolérés par les onglets.
Bon courage 😎
 
Re : Copie feuil

bsr JNP,forum

merci d'avoir repondu
mais malheureusement non !
je n'utilise pas inputbox mais une tbx dans un USF
et les caracateres speciaux ne sont pas utilsés seulement des numero taper dans la tbx apres le meme nom j'ai essayer de bidouiller ton code mais sans succés !!
 
Re : Copie feuil

Re 🙂,
Je ne suis pas tout... Que ce soit une InputBox ou un TextBox dans un USF, la boucle sur les feuilles ne peut que marcher... Tu ne prends pas le nom de ton fichier dans une TextBox vu que ta ligne de code le prends dans la cellule C5... Et une TextBox acceptera n'importe quel caractère si tu n'as pas du code derrière pour l'empêcher 😕...
Ne peux-tu mettre un bout de fichier, que l'on comprenne mieux ?
Bonne soirée 😎
 
Re : Copie feuil

Rebonsoir chez vous


Pour tester si la feuille Masque existe


Code:
Sub macro()
Dim wkB As Workbook
Set wkB = Workbooks.Open(ThisWorkbook.Path & "\MSL.xls")
If Not WorksheetExists("Masque") Then
ThisWorkbook.Sheets("Masque").Copy After:=wkB.Sheets(Sheets.Count)
'Changer le nom de la feuille créée
With ActiveSheet
    .Name = ThisWorkbook.Sheets("Masque").Range("C5")
    .Shapes.SelectAll
    Selection.Delete 'Détruire les éventuels objets shapes de la feuille
End With
End If
End Sub
Code:
Public Function WorksheetExists(ByVal WorksheetName As String) As Boolean
On Error Resume Next
WorksheetExists = (Sheets(WorksheetName).Name <> "")
On Error GoTo 0
End Function
 
Re : Copie feuil

Bsr JPN , SubEndSub , Forum

JPN , SubEndSub pour transmettre le fichier il faut que je passe par Cijoint.fr alors voila l'adresse


Cijoint.fr - Service gratuit de dépôt de fichiers

j'ai appliqué le code uniquement sur le classeur PREFA.xls

ne soyez pas trop dur !! je suis loin d'être un expert

merci a vous, forum..


voici un code qui fonctionne.....
mais le souci c'est au niveau de l'incrementation dans la feuil "RepPrefa" du classeur DEBUT.xls ca me met le meme N° que la feuil originale et l'incrementation repart avec un mauvais N°


Code:
Dim wkB As Workbook
Dim ctl As Object
Dim Li As Byte
Dim Feuille As Worksheet, NouveauNom As String

If PREFA.Value = True Then

    On Error Resume Next
    [COLOR="Green"]'Ouvrir le classeur PREFA.xls[/COLOR]
    Set wkB = Workbooks.Open(ThisWorkbook.Path & "\PREFA.xls")
    If err > 0 Then
        MsgBox "Une erreur c'est produite lors de l'ouverture du classeur MSL", vbExclamation, "Copier la feuille vers classeur PREFA.xls"
        Exit Sub
    End If
   [COLOR="Green"] ' fallait mettre wkB pour le chemin[/COLOR]
    [COLOR="Blue"]For Each Feuille In wkB.Worksheets[/COLOR]
        If Feuille.Name = TextBox3.Value Then
        MsgBox "ce dossier existe deja ! renommer"
       
        wkB.Save 'Sauvegarde
        wkB.Close 'Fermeture
    
    Exit Sub
      End If
        Next
    
   [COLOR="Green"] 'Copier la feuille dans classeur PREFA.xls[/COLOR]
    ThisWorkbook.Sheets("Masque").Copy After:=wkB.Sheets(Sheets.Count)
    'Changer le nom de la feuille créée
    ActiveSheet.Name = NouveauNom
        
   [COLOR="Green"] 'Détruire les éventuels objets shapes  de la feuille[/COLOR]
    For Each ctl In ActiveSheet.Shapes
        ctl.Delete
    Next
 
    wkB.Save 'Sauvegarde
    wkB.Close 'Fermeture
end if
 
- 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

Réponses
3
Affichages
592
Réponses
2
Affichages
893
Réponses
13
Affichages
1 K
Réponses
1
Affichages
6 K
Compte Supprimé 979
C
Retour