Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Dupliquer un onglet avec une macro

Lazz

XLDnaute Junior
Bonjour à tous,

J'ai une macro qui me permet de dupliquer un onglet avec un copié coller valeur sur un autre classeur (= petit bouton "envoyer à la compta")
Cette macro fonctionne super pour l'onglet "fiches provisions" mais pas pour l'onglet "54-maint-1" : les données ne se rapporte pas dans le nouveau classeur => voir le fichier joint
Je ne comprends pas pourquoi sachant que les deux onglets ont les même formules à savoir des recherchesV.

Pouvez vous m'aider à trouver mon erreur ?

Merci beaucoup
 

Pièces jointes

  • Classeur7.xlsm
    609.6 KB · Affichages: 12
Solution
Le "piège" était autre part.
La cellule 54-Maint C4 qui donne le nom de l'onglet devient faux une fois la feuille copiée dans un nouveau classeur car celui ci n'est pas encore enregistré.
En PJ je prends la valeur de C4, et recopie la valeur dans la feuille dupliquée.

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Lazz,
Il semblerait qu'XL n'aime pas deux macros qui portent le même nom.

Si vous appelez dupliquerFeuilleDansNouveauClasseur2 dans 54-Maint et réaffectez le bouton, alors ça marche.

Ou beaucoup plus simple. Comme les deux macros sont strictement identiques, supprimez les et mettez en une dans un module, avec les deux boutons qui appelle cette macro. Voir PJ.
 

Pièces jointes

  • Classeur7 (1).xlsm
    680.4 KB · Affichages: 9

Lazz

XLDnaute Junior
Bonjour Sylvanu,

Même en renommant, ma macro mes informations ne se rapportent pas correctement dans le nouveau classeur. Avez vous essayer d'appuyer sur le bouton ? Car moi ça me met des #VALEURS ou rien dans la ligne 8 par exemple alors qu'il y a des infos renseignées.

Me comprenez vous ?

Par contre merci pour le module j'avoue que je ne savais pas que la macro s'appliquerai dans chaque onglet !
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Dans votre Feuille 54-Maint, cellule C8 la formule essaye d'accéder au fichier :
VB:
[MODELE_Tableau de Gestion 2022.xlsm]SUIVI CAPEX'!$B$7:$P$1708
Je pense que c'est là que ça coince. Alors que dans Fiche provisions la recherche se fait bien sur l'onglet RECAP!$B$7:$O$3504.
 

Lazz

XLDnaute Junior
Oui parce que dupliquer l'onglet de mon fichier pour ne pas avoir d'infos confidentielles, mais même en enlevant la liaison ça ne marche pas dans mon fichier d'origine.
Je ne pense pas que ce soit le problème

Je vous renvoie le fichier sans liaison peut être trouverez vous la solution
 

Pièces jointes

  • Classeur7.2.xlsm
    593.3 KB · Affichages: 12

sylvanu

XLDnaute Barbatruc
Supporter XLD
Le "piège" était autre part.
La cellule 54-Maint C4 qui donne le nom de l'onglet devient faux une fois la feuille copiée dans un nouveau classeur car celui ci n'est pas encore enregistré.
En PJ je prends la valeur de C4, et recopie la valeur dans la feuille dupliquée.
 

Pièces jointes

  • Classeur7.2.xlsm
    658.7 KB · Affichages: 8

patricktoulon

XLDnaute Barbatruc
Bonjour a tous
déjà pour commencer c'est thisworlbook et non activeworkbook
surtout quand on s'amuse a copier des feuilles dans un new XL
VB:
Option Explicit

Sub dupliquerFeuilleDansNouveauClasseur()
    Dim nomFichier As String
    nomFichier = ThisWorkbook.Path & "\" & [A1] & ActiveSheet.Name & Format(Now, "_yyyymmdd") & ".xlsx"

    ActiveSheet.Copy
' ActiveSheet = feuille active sur le classeur actif : nouveau classeur
ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value ' copie les valeurs
ActiveWorkbook.SaveAs nomFichier

End Sub
ensuite quel est problème ????
je n'en vois pas perso , il n'y a aucune raison que la macro se duplique c'est une feuille que l'on duplique pas un module
je regarde un peu le reste

et je trouve des choses bizarres tout du moins bien maladroites
Code:
Set rng2 = Range(Cells(Target.Row, Target.Column + 9), Cells(Target.Row, Target.Column + 9))
heu.. c'est la même chose que set rng2=target.offset(,9)

ensuite je trouve

Code:
rng2.Activate
        Do While (IsEmpty(rng2.Value))
            MsgBox ("Veuillez renseigner cette cellule")
            rng2.Value = InputBox("Est-ce la dernière facture de ce CAPEX ? : oui ou non ?")
        Loop

alors ça c'est le meilleur moyen pour pétarder un calculate dans un sheets (voir pire)
même pas un doevents
j'aurais fait un truc du genre
VB:
Public Sub Worksheet_Change(ByVal Target As Range)
    Dim Rng2 As Range, mess$, messinput$, Reponse$
    mess = "Veuillez renseigner la  cellule :"
    
    If Target.Count > 1 Then Exit Sub
    
    Select Case Target.Column

    Case 8: If Target.Value = "oui" Then Set Rng2 = Target.Offset(, 9): messinput = Cells(1, Rng2.Column)

    Case 17: If Target.Value = "oui" Then Set Rng2 = Target.Offset(, 1): messinput = Cells(1, Rng2.Column)

    Case 18: If Target.Value <> "" Then Set Rng2 = Target.Offset(, 1): messinput = Cells(1, Rng2.Column)

    Case Else: Set Rng2 = Nothing

    End Select

    If Not Rng2 Is Nothing Then GlobalImputbox mess, messinput, Target, Rng2
End Sub

Function GlobalImputbox(ByVal mess$, ByVal messinput$, ByVal rng As Range, ByVal Rng2 As Range) As String
    Dim Reponse$
    Reponse = InputBox(mess &" ""[" &  Rng2.Address(0, 0) &&"]"" " vbCrLf & "L'immo est-elle mise en service ? : oui ou non ?")
    If Reponse = "" Or " ouinon " Like "*" & Reponse & "*" Then GlobalImputbox mess, messinput, rng, Rng2 Else Rng2 = Reponse
End Function
c’était juste comme ça en passant
 

Lazz

XLDnaute Junior
ensuite quel est problème ????
je n'en vois pas perso , il n'y a aucune raison que la macro se duplique c'est une feuille que l'on duplique pas un module
je regarde un peu le reste
Bonjour Patrick,

Avez vous appuyer sur le bouton : Envoyer à la compta ?
Personnellement mes données ne se rapportent pas dans le nouveau classeur qui se crée.
Pourtant l'onglet : fiche provision se complète correctement et je n'ai jamais eu de problème avec. Je ne comprends donc pas pourquoi la macro marche sur 1 onglet et pas sur l'autre ?


Pour le reste des informations je vais jeter un œil, merci à vous pour votre professionnalisme !
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…