Microsoft 365 Choisir l'emplacement de la duplication de l'onglet

Bender56

XLDnaute Nouveau
Bonjour,
D'habitude, je trouve rapidement en cherchant sur le net mais la, je n'arrive pas.

Je souhaite dupliquer et renommer des onglets mais en choisissant l'emplacement (après la feuille active).

Voici mon code actuelle, il fonctionne mais il place les onglets à la fin.

VB:
Public Sub CreerMarches()

    Dim oShModele As Worksheet                  'variable de type feuille
    Dim oShListe As Worksheet                   'variable de type feuille
    Dim iLig As Integer                         'variable de type nombre entier
    Dim oShNew As Worksheet                     'variable de type feuille
    Dim sNomOnglet As String                    'variable de type texte
   
    Set oShModele = Worksheets("Marche type")                       'donne une valeur à la variable
    Set oShListe = Worksheets("Récap Entreprises")                  'donne une valeur à la variable
   
   
    oShModele.Visible = True                                        'afficher le modele
   
   
    For iLig = 10 To 29                                             'boucle de la ligne 10 à la ligne 29
   
        If oShListe.Range("C" & iLig).Value <> 0 Then               'si la ligne est non vide
            sNomOnglet = oShListe.Range("A" & iLig).Value & " " & oShListe.Range("B" & iLig).Value
                                                                    'Affectation du nom de la feuille à la variable
           
            If OngletExist(sNomOnglet) Then                         'vérification que la feuille n'existe pas à la fonction OngletExist
                Set oShNew = Worksheets(sNomOnglet)                 'variable oShNew devient sNomOnglet
               
            Else
                oShModele.Copy After:=Worksheets(Worksheets.Count)  'sinon, on duplique le modèle après la dernière feuille du classeur
                Worksheets(Worksheets.Count).Name = sNomOnglet      'on renomme la dernière feuille du classeur en sNomOnglet
                Set oShNew = Worksheets(sNomOnglet)                 'variable oShNew devient sNomOnglet
               
            End If
   

   
            oShNew.Range("E13").Value = oShListe.Range("C" & iLig).Value                'Nom
            oShNew.Range("E14").Value = oShListe.Range("F" & iLig).Value                'Adresse
            oShNew.Range("E15").Value = oShListe.Range("E" & iLig).Value                'CP
            oShNew.Range("F15").Value = oShListe.Range("D" & iLig).Value                'Villes
            oShNew.Range("E16").Value = oShListe.Range("G" & iLig).Value                'Téléphone
            oShNew.Range("E17").Value = oShListe.Range("H" & iLig).Value                'Mail
           
            oShNew.Range("C38").Value = oShListe.Range("A" & iLig).Value                'num lot
            oShNew.Range("D38").Value = oShListe.Range("B" & iLig).Value                'nom lot
            oShNew.Range("F38").Value = oShListe.Range("K" & iLig).Value                '% tva
            oShNew.Range("G38").Value = oShListe.Range("J" & iLig).Value                'TTC
         
       
            oShNew.Hyperlinks.Add Anchor:=oShListe.Range("C" & iLig), Address:="", SubAddress:= _
            "'" & sNomOnglet & "'!A1", TextToDisplay:=oShListe.Range("C" & iLig).Value  'lien hypertext
           
            Set oShNew = Nothing                                                        'on vide la variable
           
        End If
           
    Next iLig
   
    oShModele.Visible = False                                       'cache le modele
   
    oShListe.Select                                                 'on selectionne la feuille
   
    Set oShListe = Nothing
    Set oShModele = Nothing
   
End Sub

Merci de votre aide ;)
 
Solution
Bonjour
oShModele.Copy After:=Worksheets(Worksheets.Count)
Peut être
oShModele.Copy After:=ActiveSheet
Merci, mais ce n'était pas bon.

After:=Worksheets(Worksheets.Count) rajoutais les onglets à la fin
After:=ActiveSheet ne fonctionnais pas

J'ai donc rajouter une variable suivant le dernier créer et j'ai du inversé le sens de la boucle

Voici le code
VB:
Public Sub Propo1()

    Dim oShModele As Worksheet                  'variable de type feuille
    Dim oShListe As Worksheet                   'variable de type feuille
    Dim iLig As Integer                         'variable de type nombre entier
    Dim oShNew As Worksheet                     'variable de type feuille
    Dim sNomOnglet As String...

Bender56

XLDnaute Nouveau
Bonjour
oShModele.Copy After:=Worksheets(Worksheets.Count)
Peut être
oShModele.Copy After:=ActiveSheet
Merci, mais ce n'était pas bon.

After:=Worksheets(Worksheets.Count) rajoutais les onglets à la fin
After:=ActiveSheet ne fonctionnais pas

J'ai donc rajouter une variable suivant le dernier créer et j'ai du inversé le sens de la boucle

Voici le code
VB:
Public Sub Propo1()

    Dim oShModele As Worksheet                  'variable de type feuille
    Dim oShListe As Worksheet                   'variable de type feuille
    Dim iLig As Integer                         'variable de type nombre entier
    Dim oShNew As Worksheet                     'variable de type feuille
    Dim sNomOnglet As String                    'variable de type texte
    Dim oShActive As Worksheet                  'variable de type feuille
    
    Set oShModele = Worksheets("PP (1)")                            'donne une valeur à la variable
    Set oShListe = Worksheets("Récap Entreprises")     'donne une valeur à la variable
    Set oShActive = Worksheets("Récap Propositions de paiement")    'donne une valeur à la variable
    
    
    oShModele.Visible = True                                        'afficher le modele
    
    
    For iLig = 29 To 10 Step -1                                     'boucle de la ligne 29 à la ligne 10
    
        If oShListe.Range("C" & iLig).Value <> 0 Then               'si la ligne est non vide
            sNomOnglet = "PP " & " " & oShListe.Range("B" & iLig).Value & " (1)"
                                                                    'Affectation du nom de la feuille à la variable
            
            If OngletExist(sNomOnglet) Then                         'vérification que la feuille n'existe pas à la fonction OngletExist
                Set oShNew = Worksheets(sNomOnglet)                 'variable oShNew devient sNomOnglet
                
            Else
                oShModele.Copy After:=oShActive                     'sinon, on duplique le modèle après la variable oShActive
                ActiveSheet.Name = sNomOnglet                       'on renomme la feuille active (normalement la feuille crée) en sNomOnglet
                Set oShNew = Worksheets(sNomOnglet)                 'variable oShNew devient sNomOnglet
                
            End If
    
            oShNew.Range("J5").Value = oShListe.Range("A" & iLig).Value                'Num lot
            oShNew.Range("K5").Value = oShListe.Range("B" & iLig).Value                'Nom lot
            oShNew.Range("B17").Value = oShListe.Range("C" & iLig).Value                'Nom entreprise
            oShNew.Range("B18").Value = oShListe.Range("F" & iLig).Value                'Adresse entreprise
            oShNew.Range("J6").Value = oShListe.Range("E" & iLig).Value                'CP entreprise
            oShNew.Range("K6").Value = oShListe.Range("D" & iLig).Value                'Ville entreprise
            oShNew.Range("B20").Value = oShListe.Range("H" & iLig).Value                'Mail entreprise
            oShNew.Range("H15").Value = oShListe.Range("J" & iLig).Value                'Base marché entreprise
            
          
        
            oShNew.Hyperlinks.Add Anchor:=Worksheets("Récap Propositions de paiement").Range("C" & iLig), Address:="", SubAddress:= _
            "'" & sNomOnglet & "'!A1", TextToDisplay:=oShListe.Range("C" & iLig).Value  'lien hypertext
            
            Set oShNew = Nothing                                                        'on vide la variable
            
        End If
            
    Next iLig
    
    oShModele.Visible = False                                       'cache le modele
    
    Worksheets("Récap Propositions de paiement").Select                                 'on selectionne la feuille
    
    Set oShListe = Nothing
    Set oShModele = Nothing
    
End Sub