Créer un classeur à partir de plusieurs données

3GB,

Alors en fait les "x" en col "G" permettent d'informer le nom du deuxième contrôleur si besoin sur chaque feuille et chaque ligne ligne bien distincte. Donc oui à moins d'avoir une autre solution...

Le but serai de pouvoir modifié le nouveau répertoire en ajoutant 1 ligne par exemple entre la AV-006 et la AV-007 , et qu'ensuite via un bouton mise à jour, le classeur se modifie automatiquement..

Cela deviendrai la "AV-007" et l'ancienne "007" deviendrai "008" et ainsi de suite,

=Insere la nouvelle feuille en modifiant seulement les valeurs renseigner dans le répertoire donc colonnes "A, B, C" mais ne change pas les autres valeurs renseignée manuellement par l'utilisateur " C", "NOM", "DATE"..etc...

Est ce que je répond à tes questions?

Bonjour Willkaa,

Je suis de retour avec une grosse mise à jour mais je suis limité au niveau des tests donc je n'ai pas essayé toute la partie création de classeur, insertion, suppression de feuilles.

Nous avons donc une petite formule en feuille AV-FK-001. Mais perso, je rajouterai une colonne pour le second contrôleur que ce soit plus clair.

Nous avons aussi un classeur modele qui crée un nouveau classeur avec les feuilles désignées dans le répertoire (ça c'était ok) mais avec des petites nouveautés :

- au moment de la création, il y a jout des liens hypertextes permettant de se rendre sur les feuilles,
- et le bouton du répertoire du nouveau cahier est modifié et se voit attribuer une nouvelle macro : LancerMajCahier.

Cette nouvelle macro en exécute 2 : MajSuppression et MajInsertion. Comment ? En testant les lignes du tableaux et principalement la colonne 9 des liens (et aussi la colonne 1 des noms de fiches) pour y voir des incohérences avec les feuilles présentes... J'ai fait d'une pierre deux coups et ça aurait été plus complexe sans ce moyen je pense.

Donc, il ne faut surtout pas, lors de l'insertion d'une ligne dans la tableau du répertoire du nouveau classeur, chercher à ajouter un hypertexte. La macro LancerMajCahier doit s'en occuper.

Je t'invite à faire des essais car je n'ai absolument pas regardé le résultat du code.

Bonjour à toi 3GB

Wouah ça à l'air de toute beauté ce que tu m'as fait!

Alors écoute je regarde tout ça et je reviens vers toi!

C'est de toute beauté . Enfin, j'ai rien fait de spécial à part du code...

Et c'était assez long donc je me suis pas particulièrement appliqué. On verra s'il y a des modifications importantes à faire.

Ah oui, j'oubliais, il faut bien que tu définisses le chemin (nom complet) du classeur modèle dans la macro MajCahierInsertion sinon ça va pas très bien marcher.

A plus,

Alors la ce sont des codes a s'y perdre !

Donc après plusieurs essai j'ai essayer comprendre ce qu'il se passait,

Alors on va y aller par étapes. ( d'ailleurs avec les accents ça m'encode différemment je devrais les supprimés! surement une erreur de version EXCEL..)

Premierement il commence à planter a ce niveau:

.Seets(fselect).Copy

Ensuite il m'as dit que le .name = nvnom etait déja utilisé

Sub NouveauCahier()

Dim wbsource As Workbook, wbnew As Workbook
Dim rcahier As Range, rnvcahier As Range
Dim modele$, nvnom$, identification$, addid$, desti$, repert$
Dim nb%, i%
Dim fselect()

Set wbsource = ThisWorkbook 'classeur origine
Set rcahier = wbsource.Sheets("Répertoire Nouveau Cahier").Range("RepCahier") 'tableau des fiches nouveau cahier
nb = rcahier.Rows.Count 'nombre lignes rcahier
fselect = Array("MENU1", "Entête", "Répertoire Nouveau Cahier", "Répertoire fiche de contrôle", "Réserves", "Listes") 'feuilles à copier d'office

Application.ScreenUpdating = False

With wbsource
    .Sheets(fselect).Copy
    Set wbnew = ActiveWorkbook
    For i = 1 To nb 'pour chaque ligne de rcahier
        modele = rcahier(i, 2).Value 'nom feuille modele = valeur en B
        nvnom = rcahier(i, 1).Value 'nouveau nom feuille = valeur en A
        identification = rcahier(i, 3).Value 'identification = valeur en C
        addid = rcahier(i, 4).Value 'valeur en D
        desti = rcahier(i, 5).Value 'valeur en E
        If modele Like "AV-FK*" Then 'si modele commence par AV
            If Not FeuilleExiste(wbsource, modele) Then GoTo Err 'si feuille existe pas, sortie vers Err
            .Sheets(modele).Copy after:=wbnew.Sheets(Sheets.Count) 'copie feuille au nom modele aprs la dernire feuille du nv classeur
            With wbnew.Sheets(Sheets.Count) 'avec cette nouvelle et dernire feuille du nv classeur
                .Name = nvnom 'nom feuille cr__e = nvnom
                .Range(addid).Value = identification 'cellule ö l'adresse addid = identification
                .Range(desti).Value = nvnom 'cellule ö l'adresse desti = nouveau nom
            End With
        End If
    Next i
End With

et quand je reprends l'ancienne macro ça fonctionne bien

Sub NouveauCahier()

Dim wbsource As Workbook, wbnew As Workbook
Dim rcahier As Range
Dim modele$, nvnom$, identification$, addid$, desti$, repert$
Dim nb%, i%
Dim fselect()

Set wbsource = ThisWorkbook 'classeur origine
Set rcahier = wbsource.Sheets("Répertoire Nouveau Cahier").Range("RepCahier") 'tableau des fiches nouveau cahier
nb = rcahier.Rows.Count 'nombre lignes rcahier
fselect = Array("MENU1", "Entête", "Répertoire fiche de contrôle", "Répertoire Nouveau Cahier", "Listes", "Réserves", "Listes") 'feuilles ˆ copier d'office

Application.ScreenUpdating = False

With wbsource
    .Sheets(Array("Entête", "Répertoire fiche de contrôle", "Répertoire Nouveau Cahier", "MENU1", "Listes", "Réserves")).Copy  'CAS 1 : copie feuilles entete et fiche controle dans nouveau classeur
    'CAS 2 : .Sheets("Entête").Copy
    Set wbnew = ActiveWorkbook 'affectation wbnew 'CAS 1 ou 2
    'CAS 2 : .Sheets("Répertoire fiche de contrôle").Copy after:=wbnew.Sheets("Entête")

'.Sheets(fselect).Copy  'copie feuilles d'office dans nouveau classeur
    Set wbnew = ActiveWorkbook 'affectation wbnew
    For i = 1 To nb 'pour chaque ligne de rcahier
        modele = rcahier(i, 2).Value 'nom feuille modele = valeur en B
        nvnom = rcahier(i, 1).Value 'nouveau nom feuille = valeur en A
        identification = rcahier(i, 3).Value 'identification = valeur en C
        addid = rcahier(i, 4).Value 'valeur en D
        desti = rcahier(i, 5).Value 'valeur en E
        If modele Like "AV*" Then 'si modele commence par AV
            If Not FeuilleExiste(wbsource, modele) Then GoTo Err 'si feuille existe pas, sortie vers Err
            .Sheets(modele).Copy after:=wbnew.Sheets(Sheets.Count) 'copie feuille au nom modele aprs la dernire feuille du nv classeur
            With wbnew.Sheets(Sheets.Count) 'avec cette nouvelle et dernire feuille du nv classeur
                .Name = nvnom 'nom feuille crŽŽe = nvnom
                .Range(addid).Value = identification 'cellule ˆ l'adresse addid = identification
                .Range(desti).Value = nvnom 'cellule ˆ l'adresse desti = nouveau nom
            End With
        End If
    Next i
End With

Oui, ça commence à faire lourd...

En fait, j'ai un mac d'où la conversion des accents et ce serait une idée éclairée que de passer sans aucun caractères accentués !!!

Le sheets(fselect) bloque probablement à cause des accents. Il va malheureusement falloir que tu les contrôles tous (mais je vais quand même ta copier les codes pour t'éviter tout ce boulot). Sinon, c'est soit une des 6 feuilles du classeur modèle qui a été renommée, soit un nom de feuille qui n'est pas parfaitement libellé à la ligne fselect = array ...

Pour le .name = nvnom, c'est assez énigmatique. Normalement, il copie des feuilles AV-FK et les renommes AVxxx. La seule possibilité selon moi serait une coquille dans la colonne Fiches du classeur modèle (feuille cahier), plus précisément un doublon de valeurs.

Cette macro n'est pas si différente de l'ancienne (et le début est identique si je ne me trompe pas) donc ce ne sont que des problèmes de noms mal libellés.

Je reviens avec les codes.

MODULE MAJCLASSEUR

Option Base 1

Sub LancerMajCahier()

Call MajCahierSuppression
Call MajCahierInsertion

End Sub

Sub MajCahierSuppression() 'suppression en rafale des feuilles correspondant à des lignes supprimées du répertoire (macro exclusivement sur classeur courant, à utiliser dans nouveau cahier)

Dim wsrep As Worksheet
Dim rnvcahier As Range
Dim FeuilleReste(), NouveauNom()
Dim i%, n%, j%
Dim conserver As Boolean

Set wsrep = Sheets("Répertoire Nouveau Cahier") 'feuille repertoire nouveau cahier
Set rnvcahier = wsrep.Range("RepCahier") 'tableau liste fiches nouveau cahier

Application.ScreenUpdating = False 'désactive maj écran

If Application.CountIfs(rnvcahier.Columns(1), "<>", rnvcahier.Columns(9), "<>") > Worksheets.Count - 6 Then 'si nb lignes avec fiches et lien non vides > nb de feuilles - 6 (cad au nb fiches)

        For i = 1 To rnvcahier.Rows.Count 'pour chaque ligne du tableau
            If rnvcahier(i, 1).Value <> "" And rnvcahier(i, 9).Value <> "" Then 'si fiche et lien non vides
                n = n + 1 'incrémentation n
                ReDim Preserve FeuilleReste(n) 'redimension du tableau listant feuille devant rester
                ReDim Preserve NouveauNom(n) 'redimension du tableau listant les nouveaux noms des feuilles devant rester
                FeuilleReste(n) = Replace(Replace(rnvcahier(i, 9).SubAddress, "!A1", ""), "'", "") 'nouvel item du tableau vaut nom feuille en cours : sur cellule lien en cours, l'adresse de pointage du lien renvoie 'nomfeuille'!A1. On remplace par vide !A1 et ' pour obtenir nomfeuille
                NouveauNom(n) = rnvcahier(i, 1).Value 'nouveau nom en cellule fiche
            End If
        Next i

        For i = 6 To Sheets.Count 'de la feuille 6 à la dernière feuille (commence à 6 pour éviter bug)
            If Sheets(i).Name Like "AV*" Then 'si nom feuille commence par AV
                For j = 1 To n 'comparaison avec chaque feuille devant rester
                    If Sheets(i).Name = FeuilleReste(j) Then conserver = True: Exit For 'si feuille en cours fait partie des feuilles devant rester, conserver vaut vrai, on quitte la boucle
                Next j
                If conserver Then 'si conserver vaut vrai
                    Sheets(i).Name = NouveauNom(j) 'on renomme la feuille devant rester
                Else 'sinon
                    Application.DisplayAlerts = False 'désactive alertes
                    Sheets(i).Delete 'on supprime la feuille
                    Application.DisplayAlerts = True 'on réactive alertes
                End If
                conserver = False 'on remet conserver sur faux
            End If
        Next i

End If

Application.ScreenUpdating = True 'réactive maj ecran

Set rnvcahier = Nothing: Set wsrep = Nothing 'liberation variables
'RQ : cette macro n'agit donc que sur le classeur executant _
elle permet d'eviter les lignes du tableau de fiches n'ayant pas de valeur dans la colonne lien (notamment celles qui ont été insérées)
End Sub

Sub MajCahierInsertion()

Dim wbcahier As Workbook, wbsource As Workbook
Dim wsrep As Worksheet
Dim rnvcahier As Range
Dim nomclasseur$
Dim i%, num%

nomclasseur = "......." '<<<<METTRE CHEMIN DU CLASSEUR MODELE
Set wbcahier = ThisWorkbook 'classeur executant (nouveau cahier)
Set wsrep = wbcahier.Sheets("Répertoire Nouveau Cahier") 'feuille repertoire nv cahier
Set rnvcahier = wsrep.Range("RepCahier") 'tableau fiches

Application.ScreenUpdating = False

If Application.CountIfs(rnvcahier.Columns(1), "<>", rnvcahier.Columns(9), "") > 0 Then 'si nb lignes avec fiche remplie et lien vide > 0
    On Error Resume Next 'en cas d'erreur, continuer (au cas ou classeur modele est fermé)
    Set wbsource = Workbooks(nomclasseur) 'classeur modele
    If Err.Number = 9 Then 'si erreur : indice nappartient pas a la selection (classeur modele ferme)
        Err.Clear 'effacer les erreurs
        Application.DisplayAlerts = False
        Set wbsource = worbooks.Open(nomclasseur) 'ouverture du classeur modele (SUGGERE UN CHEMIN CORRECT, sinon, rajouter gestion erreur 1004 puis forcer sortie procedure)
        Application.DisplayAlerts = True
    End If

    With wbcahier 'avec nv classeur
        For i = 1 To rnvcahier.Rows.Count 'pour chaque lignes des fiches nv classeur
            If rnvcahier(i, 1).Value <> "" And rnvcahier(i, 9).Value = "" Then 'si fiche remplie et lien vide (donc ligne inseree)
                num = Right(rnvcahier(i, 1).Value, 2) + 6 'num = index feuille concernee = droite fiche + 6
                wbsource.Sheets(rnvcahier(i, 2).Value).Copy after:=.Sheets(num - 1) 'copie feuille du classeur modele a l'index num
                With .Sheets(num) 'avec feuille num (feuille inseree a linstant)
                    .Range(rnvcahier(i, 4).Value).Value = rnvcahier(i, 3).Value 'cellule a l'adresse addid = identification
                    .Range(rnvcahier(i, 5).Value).Value = rnvcahier(i, 1).Value 'cellule a l'adresse desti = nouveau nom
                    rnvcahier(i, 9).Hyperlinks.Add anchor:=rnvcahier(i, 9), Address:="", _
                    SubAddress:="'" & .Name & "'!A1", _
                    ScreenTip:="Activez la feuille " & rnvcahier(i, 1).Value, _
                    TextToDisplay:="Accès à la feuille : " & rnvcahier(i, 3).Value 'ajout hypertexte en colonne lien pointant sur feuille num
                End With
            End If
        Next i
        For i = .Sheets.Count To 6 Step -1 'de la derniere feuille à la feuille 6
            If .Sheets(i).Name Like "AV*" Then 'si feuille commence par AV
                .Sheets(i).Name = Left(.Sheets(i).Name, 4) & Format(i - 6, "00") 'nom feuille = prefixe & suffixe = racine nom feuille & index feuille - 6 (car 6 feuilles fixes)
            End If
        Next i
    End With
End If

wbsource.Close savechanges:=True 'ferme et sauve
Application.ScreenUpdating = True
Set rnvcahier = Nothing: Set wsrep = Nothing: wbsource = Nothing: Set wbcahier = Nothing

End Sub

C'est ch**nt, on doit attendre 1 minute entre 2 commentaires...

MODULE CréationClasseur

Sub NouveauCahier()

Dim wbsource As Workbook, wbnew As Workbook
Dim rcahier As Range, rnvcahier As Range
Dim modele$, nvnom$, identification$, addid$, desti$, repert$
Dim nb%, i%
Dim fselect()

Set wbsource = ThisWorkbook 'classeur origine
Set rcahier = wbsource.Sheets("Répertoire Nouveau Cahier").Range("RepCahier") 'tableau des fiches nouveau cahier
nb = rcahier.Rows.Count 'nombre lignes rcahier
fselect = Array("MENU1", "Entête", "Répertoire Nouveau Cahier", "Répertoire fiche de contrôle", "Réserves", "Listes") 'feuilles ˆ copier d'office

Application.ScreenUpdating = False

With wbsource
    .Sheets(fselect).Copy
    Set wbnew = ActiveWorkbook
    For i = 1 To nb 'pour chaque ligne de rcahier
        modele = rcahier(i, 2).Value 'nom feuille modele = valeur en B
        nvnom = rcahier(i, 1).Value 'nouveau nom feuille = valeur en A
        identification = rcahier(i, 3).Value 'identification = valeur en C
        addid = rcahier(i, 4).Value 'valeur en D
        desti = rcahier(i, 5).Value 'valeur en E
        If modele Like "AV*" Then 'si modele commence par AV
            If Not FeuilleExiste(wbsource, modele) Then GoTo Err 'si feuille existe pas, sortie vers Err
            .Sheets(modele).Copy after:=wbnew.Sheets(Sheets.Count) 'copie feuille au nom modele après la dernière feuille du nv classeur
            With wbnew.Sheets(Sheets.Count) 'avec cette nouvelle et dernière feuille du nv classeur
                .Name = nvnom 'nom feuille cr__e = nvnom
                .Range(addid).Value = identification 'cellule ˆ l'adresse addid = identification
                .Range(desti).Value = nvnom 'cellule ˆ l'adresse desti = nouveau nom
            End With
        End If
    Next i
End With

'Call HypertextesRafale(wbnew.Sheets("Répertoire Nouveau Cahier").Range("RepCahier"))

With wbnew
    Set rnvcahier = .Sheets("Répertoire Nouveau Cahier").Range("RepCahier") 'tableau des fiches nouveau cahier
    For i = 1 To nb
        If Not rnvcahier(i, 1).Value = "" Then
            rnvcahier(i, 9).Hyperlinks.Add _
                anchor:=rnvcahier(i, 9), _
                Address:="", _
                SubAddress:="'" & rnvcahier(i, 1).Value & "'!A1", _
                ScreenTip:="Activez la feuille " & rnvcahier(i, 1).Value, _
                TextToDisplay:="Accès à la feuille : " & rnvcahier(i, 3).Value
        End If
    Next i
    With .Sheets("Répertoire Nouveau Cahier").Buttons(1)
        .Text = "Mettre à jour les fiches"
        .Name = "MAJCLASSEUR"
        .OnAction = "LancerMajCahier"
    End With
End With

Application.ScreenUpdating = True

'wbnew.Close savechanges:=True, Filename:=wbsource.Path & "\Cahier " & Format(Now, "YYMMDD-HHMM") & ".xlsm" 'fermeture et sauvegarde wbnew au nom d_fini (ˆ modifier)
Set wbsource = Nothing: Set wbnew = Nothing
Exit Sub

Err: 'si erreur
MsgBox "Feuille " & modele & " inexistante !", vbCritical 'msg erreur
wbnew.Close savechanges:=False 'nouveau classeur ferm_ sans enregistrement
Set wbsource = Nothing: Set wbnew = Nothing

End Sub

Function FeuilleExiste(Classeur As Workbook, NomFeuille As String) As Boolean 'fonction testant existence feuille
On Error Resume Next
FeuilleExiste = Classeur.Sheets(NomFeuille).Index
End Function

'MACRO AU CAS OU MAIS INACTIVE POUR L'INSTANT
Sub HypertextesRafale(Tableau As Range)

Dim i%

For i = 1 To Tableau.Rows.Count
    If Not Tableau(i, 1).Value = "" Then
        Tableau(i, 9).Hyperlinks.Add _
            anchor:=Tableau(i, 9), _
            Address:="", _
            SubAddress:="'" & Tableau(i, 1).Value & "'!A1", _
            ScreenTip:="Activez la feuille " & Tableau(i, 1).Value, _
            TextToDisplay:="Accès à la feuille : " & Tableau(i, 3).Value
    End If
Next i

End Sub

MODULE ManipOnglets

Sub CreerBoutons()

Dim sh As Shape
Dim col%
Dim shrep As Button, shres As Button

For Each cell In Sheets("Listes").Range("Fiches")
    Set feuille = Sheets(cell.Value)
    With feuille
        col = .Cells.Find("XXX").Column
        For Each sh In .Shapes
            If sh.Type = msoFormControl Then sh.Delete
        Next
        Set shrep = .Buttons.Add(.Cells(6, col).Left, .Cells(6, col).Top, 138, 30)
        Set shres = .Buttons.Add(.Cells(10, col).Left, .Cells(10, col).Top, 138, 30)
        With shrep
            .Text = "Répertoire"
            .Name = "Répertoire"
            .OnAction = "AllerRepertoire"
        End With
        With shres
            .Text = "Réserve"
            .Name = "Réserve"
            .OnAction = "AllerReserve"
        End With
    End With
Next

End Sub

Sub AllerRepertoire()
Sheets("Répertoire Nouveau Cahier").Activate
End Sub

Sub AllerReserve()
Sheets("Réserves").Activate
End Sub

Ah oui..

Merci! Je vais recoller tout ça, et vérifié les nom de feuilles

ah et tu me me disais qu'il fallait que je mette le chemin, mais si je mets "Windows(1-Cahier......)" ça ne fonctionne pas; Alors je pense que je l'écris surement mal..

Le chemin c'est : "C:\Willkaa\Cahiers\...\nomdufichier.xlsm". Bien sûr, c'est un exemple

Sub monchemin()

range("Z1").value = thisworkbook.fullname

end sub

Avec cette macro, tu auras le chemin du fichier (donc le fichier modele !) sur la cellule Z1 de la feuille active.

Edit : bon, j'espère que tu reviendras avec de bonnes nouvelles à ton prochain message

Alors j’aurais aimer sincèrement,.. Mais malheureusement ce n'est pas le cas..

Je comprends pas ce qui se passe

J'ai inséré une ligne dans le répertoire et quand j'ai appuyer sur "Mettre à jour les fiches" il n'y a eu aucun message d'erreur

et rien de plus..

Par contre il m'a changé le nom des feuilles sur mon classeur modèle en 'AV-F01' et rempli aussi les identifications des fiches modèles et elles porte le nouveau nom "AV-007" en "F6"

Ah c'est embêtant... Il a exécuté la macro sur le classeur modèle au lieu d'agir sur le classeur Cahier. Peux-tu essayer en modifiant ainsi :

A LA FIN DE LA MACRO NouveauCahier :

    .saveas filename:="Cahier " & Format(Now, "YYMMDD-HHMM") & ".xlsm"
    With .Sheets("Répertoire Nouveau Cahier").Buttons(1)
        .Text = "Mettre à jour les fiches"
        .Name = "MAJCLASSEUR"
        .OnAction = "'" & wbnew.name & "'!LancerMajCahier"
    End With

J'ai aucune certitude mais je ne vois pas comment faire autrement pour l'instant...

J'ai un petit problème Maître.. Vous allez rire mais "à la fin" .. Ca signifie entre quoi et quoi plutôt car je sais pas quel endroit après plusieurs essai c'est toujours pas le bon endroit ..

I'm Novice Sorry..

  Next i
    With .Sheets("Répertoire Nouveau Cahier").Buttons(1)
        .Text = "Mettre à jour les fiches"
        .Name = "MAJCLASSEUR"
        .OnAction = "LancerMajCahier"
    End With
End With

.SaveAs Filename:="Cahier " & Format(Now, "YYMMDD-HHMM") & ".xlsm"
    With .Sheets("Répertoire Nouveau Cahier").Buttons(1)
        .Text = "Mettre à jour les fiches"
        .Name = "MAJCLASSEUR"
        .OnAction = "'" & wbnew.Name & "'!LancerMajCahier"
    End With

Application.ScreenUpdating = True

'wbnew.Close savechanges:=True, Filename:=wbsource.Path & "\Cahier " & Format(Now, "YYMMDD-HHMM") & ".xlsm" 'fermeture et sauvegarde wbnew au nom d_fini (ˆ modifier)
Set wbsource = Nothing: Set wbnew = Nothing

Exit Sub

Désolé, c'est moi qui ne suis pas assez clair mais comme il commence à y avoir pas mal de code, j'abrège. Il faut remplacer :

    With .Sheets("Répertoire Nouveau Cahier").Buttons(1)
        .Text = "Mettre à jour les fiches"
        .Name = "MAJCLASSEUR"
        .OnAction = "LancerMajCahier"
    End With

par :

    .SaveAs Filename:="Cahier " & Format(Now, "YYMMDD-HHMM") & ".xlsm"
    With .Sheets("Répertoire Nouveau Cahier").Buttons(1)
        .Text = "Mettre à jour les fiches"
        .Name = "MAJCLASSEUR"
        .OnAction = "'" & wbnew.Name & "'!LancerMajCahier"
    End With

On sauve le fichier, qui de cette manière a un nom.

Ensuite, on affecte au bouton de la feuille rép nv cahier du nouveau classeur la macro LancerMajCahier du nouveau classeur.

En espérant que ç amarche évidemment...

Bonne soirée,

Bonjour 3GB,

Comment vas tu en cette période froide?

Alors j'ai remplacé les codes, seulement il plante à ce niveau :

.SaveAs Filename:="Cahier " & Format(Now, "YYMMDD-HHMM") & ".xlsm"

et me dit:

image

Salut Willkaa,

Je vais bien mais il est vrai que je me sens mieux en août. Et toi comment vas-tu ?

Pour ce problème, peux-tu essayer ainsi :

.SaveAs Filename:="Cahier " & Format(Now, "YYMMDD-HHMM"), fileformat:=xlOpenXMLWorkbookMacroEnabled

Je suis en train de m'interroger sur les macros du modele. Pourrais-tu vérifier si elles sont reprises dans le nouveau cahier ? Je n'ai jamais essayé ce genre de manipulations donc je n'ai aucune certitude du résultat. Sinon, j'essaierais de trouver un moyen de reprendre les macros du classeurs d'origine...

Fraîchement quand je pointe le bout de mon nez dehors!

Alors ce problème est réglé,

Mais tu as raison il n'y a aucune macro dans le nouveau classeur créé

Oui, c'est ce que je me disais. On a pas abordé la chose de la bonne manière donc il va falloir changer de stratégie, qui s'avérera probablement un peu simple en fin de compte.

Mais je vais devoir modifié le code NouveauCahier...

Très bien j'attends tes ordres

Rechercher des sujets similaires à "creer classeur partir donnees"