(VBA) Exportation Modules et Feuilles
Hello le forum,
J'ai récupéré un code sur le forum, pour exporter un module de mon classeur actif vers un ou plusieurs autres classeurs du répertoire.
J'ai retouché le code pour exporter tous les modules que je souhaite.
Maintenant, je veux faire la même chose mais pour les feuilles de calcul (.cls) sans trop toucher au code.
Par exemple boucler sur mes modules et ensuite boucler sur mes feuilles.
Pouvez-vous m'apporter vos lumières ?
Merci à vous.
Bonjour,
il faut mettre la ligne Dim Cls As Workbook
en haut du module pour la rendre disponible pour tout les code du module (à l'extérieur de la macro)
et juste avant la ligne Cls.Close True
ajouter la ligne suivante
Call copy_onglet
la macro copy_onglet
Sub copy_onglet()
For Each f In ThisWorkbook.Worksheets
If f.Name <> iciSheet Then
f.Copy After:=Cls.Sheets(Sheets.Count)
End If
Next
End Sub
Hello i20100,
Tout d'abord merci pour ta réponse
J'ai dû mal m'exprimer, je ne veux pas copier les feuilles dans mes autres classeurs, je veux copier le code qu'il y a à l'intérieur de mes feuilles.
Tout ce qui est événement vba (change, selectionchange ...)
Je veux que mon fichier à terme soit un fichier de suivi de toutes mes MAJ de macros (Modules, code dans les feuilles, userforms ...)
Pour le moment je n'ai que des modules et des événements à MAJ.
J'ai pensé à indiquer en colonne A le nom de mes modules et comme ça je boucle sur tous mes modules.
Pourquoi ne pas faire la même chose avec les feuilles ?
Exemple :
- Mettre le nom des feuilles en colonne B
- refaire une autre boucle sur le code des feuilles (événements)
Je fais appel à vous car je n'ai pas trouvé grand chose sur l'exportation du code à l'intérieur des feuilles
Si vous savez comment faire la même procédure que j'ai actuellement mais pour le code des feuilles ça serait top (et aussi les USERFORMS par la suite
Merci pour votre aide.
Sub ImportModuleDansClasseurs()
Dim Cls As Workbook
Dim TestMod As Object
Dim Tbl
Dim Chemin As String
Dim NomModule As String
Dim I As Integer
Dim Nb_Mod As Byte
Dim Der_Lin As Byte
Nb_Mod = Range("A1").End(xlDown).Row
For j = 1 To Nb_Mod
NomModule = Cells(j, 1).Value 'adapter le nom du module à exporter dans le dossier du classeur contenant cette macro
'le module est exporté dans le dossier contenant tous les classeurs (y compris celui contenant cette macro)
Chemin = ThisWorkbook.Path & "\" & NomModule & ".bas"
'exporte le module
ThisWorkbook.VBProject.VBComponents(NomModule).Export Chemin
'récupère le chemin et nom des différents classeurs .xls et .xlsm
'les classeurs sont dans le même dossier que le classeur contenant cette macro
Tbl = RecupFichiers(ThisWorkbook.Path & "\", ThisWorkbook.Name)
'évite les éventuelles boites de message
Application.DisplayAlerts = False
'ouvre les classeur
For I = 1 To UBound(Tbl)
Set Cls = Workbooks.Open(Tbl(I))
'teste si le module est déjà présent dans le classeur ou si un module porte déjà ce nom
On Error Resume Next
Set TestMod = Cls.VBProject.VBComponents(NomModule)
'si pas d'erreur, le module existe demande alors si on veux le remplacer
'dans la négative, il sera renommé en "MonModule1" ou "MonModule2" etc...
'sinon, le module existant sera supprimé et remplacé par le nouveau
If Err.Number = 0 Then
If MsgBox("Le module '" & NomModule & "' existe déjà dans le classeur '" & Cls.Name & "' !" _
& vbCrLf _
& vbCrLf _
& "Voulez-vous le remplacer ?", _
vbQuestion + vbYesNo) = vbYes Then
Cls.VBProject.VBComponents.Remove TestMod
End If
Err.Clear
End If
Cls.VBProject.VBComponents.Import Chemin 'importe
' Call copy_onglet
Cls.Close True 'enregistre et ferme
Next I
Next j
Set MonficgierSuppr = CreateObject("Scripting.filesystemobject")
MonficgierSuppr.deletefile (ThisWorkbook.Path & "\" & "*.bas")
'rétabli
Application.DisplayAlerts = True
End Sub
Function RecupFichiers(Chemin As String, NomClasseur As String) As String()
Dim TableauFichiers() As String
Dim Fichier As String
Dim I As Integer
Fichier = Dir(Chemin & "*.xls*")
Do While (Len(Fichier) > 0)
If Right(Fichier, 5) <> ".xlsx" And Fichier <> NomClasseur Then 'évite les ".xlsx et ce classeur"
I = I + 1
ReDim Preserve TableauFichiers(1 To I)
TableauFichiers(I) = Chemin & Fichier
End If
Fichier = Dir()
Loop
RecupFichiers = TableauFichiers()
End Function
'Sub copy_onglet()
'For Each f In ThisWorkbook.Worksheets
' If f.Name <> iciSheet Then
' f.Copy After:=Cls.Sheets(Sheets.Count)
' End If
'Next
'End Sub
Bonjour,
Ce code me parle surtout ma fonction "RecupFichiers()"
Je ne vois pas trop ce que tu souhaites faire et pourquoi exporter et importer les mêmes procédures qui vont se trouver en doublons, triplons, etc pour chaque modif !
Ici un code pour connaître le type de module et leur extensions. voir dans la fenêtre de débogage (Ctrl+G) :
Sub test()
Dim Cls As Workbook
Dim mModule As Object
Set Cls = ThisWorkbook
With Cls.VBProject
For Each mModule In .VBComponents
Select Case mModule.Type
Case 1: Debug.Print "Module standard avec extension '.bas'"; " --> "; mModule.Name; " -- "; mModule.Type
Case 2: Debug.Print "Module de classe avec extension '.cls'"; " --> "; mModule.Name; " -- "; mModule.Type
Case 3: Debug.Print "Module d'UserForm avec extension '.frm'"; " --> "; mModule.Name; " -- "; mModule.Type
Case 100: Debug.Print "Module du classeur et des feuilles avec extension '.cls"; " --> "; mModule.Name; " -- "; mModule.Type
End Select
Next mModule
End With
End Sub
Hello Theze,
Il doit surement être de toi
Ce que je veux faire est simple. Actuellement mon code exporte ou remplace tous les modules dont le nom est indiqué en colonne A (dans le classeur j'en ai 2 => cellule A1 et A2). Jusque là pas de soucis.
Maintenant, j'ai du code dans ma feuil1 :
Private Sub Worksheet_Change(ByVal Target As Range)
MsgBox "vous avez changé une cellule"
End Sub
Je veux faire la même chose que pour les modules, c'est à dire :
1- Mettre le nom (Feuil1) dans la cellule B1
2 - le code récupére ce nom et copie le code ci-dessus dans la feuille du même nom d'un autre classeur.
Je pensais peut-être à ça ?
Sub ImportModuleDansClasseurs()
Dim Cls As Workbook
Dim TestMod As Object
Dim Tbl
Dim Chemin As String
Dim NomModule As String
Dim NomFeuille As String
Dim I As Integer
Dim j As Integer
Dim k As Integer
Dim L As Integer
Dim Nb_Mod As Byte
Dim Der_Lin As Byte
Dim Nb_Feui As Byte
Nb_Mod = Range("A1").End(xlDown).Row
Nb_Feui = Range("B1").End(xlDown).Row
For j = 1 To Nb_Mod
NomModule = Cells(j, 1).Value 'adapter le nom du module à exporter dans le dossier du classeur contenant cette macro
'le module est exporté dans le dossier contenant tous les classeurs (y compris celui contenant cette macro)
Chemin = ThisWorkbook.Path & "\" & NomModule & ".bas"
'exporte le module
ThisWorkbook.VBProject.VBComponents(NomModule).Export Chemin
'récupère le chemin et nom des différents classeurs .xls et .xlsm
'les classeurs sont dans le même dossier que le classeur contenant cette macro
Tbl = RecupFichiers(ThisWorkbook.Path & "\", ThisWorkbook.Name)
'évite les éventuelles boites de message
Application.DisplayAlerts = False
'ouvre les classeur
For I = 1 To UBound(Tbl)
Set Cls = Workbooks.Open(Tbl(I))
'teste si le module est déjà présent dans le classeur ou si un module porte déjà ce nom
On Error Resume Next
Set TestMod = Cls.VBProject.VBComponents(NomModule)
'si pas d'erreur, le module existe demande alors si on veux le remplacer
'dans la négative, il sera renommé en "MonModule1" ou "MonModule2" etc...
'sinon, le module existant sera supprimé et remplacé par le nouveau
If Err.Number = 0 Then
If MsgBox("Le module '" & NomModule & "' existe déjà dans le classeur '" & Cls.Name & "' !" _
& vbCrLf _
& vbCrLf _
& "Voulez-vous le remplacer ?", _
vbQuestion + vbYesNo) = vbYes Then
Cls.VBProject.VBComponents.Remove TestMod
End If
Err.Clear
End If
Cls.VBProject.VBComponents.Import Chemin 'importe
' Call copy_onglet
Cls.Close True 'enregistre et ferme
Next I
Next j
For L = 1 To Nb_Feui
NomFeuille = Cells(L, 2).Value 'adapter le nom du module à exporter dans le dossier du classeur contenant cette macro
'le module est exporté dans le dossier contenant tous les classeurs (y compris celui contenant cette macro)
Chemin = ThisWorkbook.Path & "\" & NomFeuille & ".cls"
'exporte le module
ThisWorkbook.VBProject.VBComponents(NomFeuille).Export Chemin
'récupère le chemin et nom des différents classeurs .xls et .xlsm
'les classeurs sont dans le même dossier que le classeur contenant cette macro
Tbl = RecupFichiers(ThisWorkbook.Path & "\", ThisWorkbook.Name)
'évite les éventuelles boites de message
Application.DisplayAlerts = False
'ouvre les classeur
For k = 1 To UBound(Tbl)
Set Cls = Workbooks.Open(Tbl(I))
'teste si le module est déjà présent dans le classeur ou si un module porte déjà ce nom
On Error Resume Next
Set TestMod = Cls.VBProject.VBComponents(NomFeuille)
'si pas d'erreur, le module existe demande alors si on veux le remplacer
'dans la négative, il sera renommé en "MonModule1" ou "MonModule2" etc...
'sinon, le module existant sera supprimé et remplacé par le nouveau
If Err.Number = 0 Then
If MsgBox("La Feuille '" & NomFeuille & "' existe déjà dans le classeur '" & Cls.Name & "' !" _
& vbCrLf _
& vbCrLf _
& "Voulez-vous le remplacer ?", _
vbQuestion + vbYesNo) = vbYes Then
Cls.VBProject.VBComponents.Remove TestMod
End If
Err.Clear
End If
Cls.VBProject.VBComponents.Import Chemin 'importe
' Call copy_onglet
Cls.Close True 'enregistre et ferme
Next k
Next L
Set MonficgierSuppr = CreateObject("Scripting.filesystemobject")
MonficgierSuppr.deletefile (ThisWorkbook.Path & "\" & "*.bas")
'rétabli
Application.DisplayAlerts = True
End Sub
Personne ne sait pour l'exportation du code des événements Worsheet ??
Bonjour,
Je ne saisis toujours pas trop ce que tu veux mais voilà ce que j'en ai compris !
Tu veux exporter les modules des feuilles, pour ça voici le code :
Sub Exporter()
Dim Cls As Workbook
Dim mModule As Object
Dim Chemin As String
Set Cls = ThisWorkbook
With Cls.VBProject
For Each mModule In .VBComponents
If mModule.Type = 100 Then
'seulement les modules de feuilles et ceci, dans le même dossier que celui du classeur
If mModule.Name <> "ThisWorkbook" Then
Chemin = Cls.Path & "\" & mModule.Name & ".cls"
Cls.VBProject.VBComponents(mModule.Name).Export Chemin
End If
End If
Next mModule
End With
End Sub
Ensuite je suppose que tu veux pouvoir ré-importer ces modules dans le classeur (ou un autre) mais dans ce cas, il te faut savoir que les modules de feuilles et classeur sont des modules de classe et donc, ils ne seront pas directement importés dans le module de la feuille correspondante ou du classeur mais dans la collection des modules de classe et pour mettre le code dans le module visé (module d'une feuille ou du classeur) il faut faire une petite gymnastique en supprimant les lignes du module puis en important celles du module de classe, une fois ceci fait, supprimer le module de classe devenu inutile, pour ça, voici le code :
Sub Importer()
Dim Cls As Workbook
Dim mModule As Object
Dim ModFeuille As Object
Dim Fe As Worksheet
Dim Chemin As String
Set Cls = ThisWorkbook
Set Fe = Cls.Worksheets("Feuil1")
Set ModFeuille = ThisWorkbook.VBProject.VBComponents(Fe.Name).CodeModule
Chemin = Cls.Path & "\" & ModFeuille.Name & ".cls"
'importe le module, ce dernier étant un module de classe, il est ajouté à la collection des module de classe
'et non directement dans le module de la feuille concerné
Set mModule = Cls.VBProject.VBComponents.Import(Chemin)
'si le module de classe n'est pas vide de ligne...
If mModule.CodeModule.CountOfLines > 0 Then
'supprime toutes les lignes du module de la feuille et importer les lignes du module de classe
With ModFeuille
.DeleteLines 1, .CountOfLines
.InsertLines .CountOfLines + 1, mModule.CodeModule.Lines(1, mModule.CodeModule.CountOfLines)
End With
End If
'supprime le module de classe devenu inutile
Cls.VBProject.VBComponents.Remove mModule
'supprime le fichier sur le disque
'Kill Chemin
End Sub
Hello Theze,
Oui c'est exporter les modules de feuille, dsl je connais pas tous les termes encore
J'ai essayé d'importer le module de feuille et je me suis aperçu qu'il s'exportait en module de classe ...
Du coup j'ai fouiné un peu partout et j'ai trouvé un autre moyen pour faire cette exportation, en créant un fichier texte, exporter le code du module de feuille dans ce fichier txt et ensuite importer ce code dans le bon classeur.
Mais je vais tester aussi ta méthode
La + rapide et la + simple pour toi c'est laquelle ?
Merci à toi.
Bonjour,
La + rapide et la + simple pour toi c'est laquelle ?
Un module, qu'il soit de classe ou standard ou même d'UserForm n'est ni plus ni moins qu'un fichier texte, pour t'en convaincre, clic droit sur le module dans l'explorateur et ouvrir avec le bloc notes.
Maintenant, pour dire quelle procédure est la plus rapide vraiment, je n'ai pas testé mais l'exportation se faisant en une seule commande, j'en déduis que ce doit être elle !
Hello Theze,
Je reviens vers toi car je suis perdu ...
Je joins un fichier à ma demande :
Le principe de ce fichier est de faire un suivi de mes mise à jour de macro. Ce fichier sera exactement le même que les fichiers dans mes repertoires avec cette feuille "Exportation" en +.
J'ai trois répertoires composés de fichiers xlsm et xlsx. Pour les fichiers xlsm ils sont tous conçu pareil.
Je veux exporter et importer les macros de mon fichiers "Exportation_macros" dans tous les fichiers xlsm des mes 3 répertoires (je veux que les fichiers xlsm aient les meme macros que le fichier "Exportation_macros". )
Dans mon fichier "Exportation_macros", j'ai les colonnes "Modules à exporter";"Fichiers traités";"Statut"
Dans la colonne "Modules à exporter" je veux indiquer le nom du ou des modules à exporter (ça peut être des nom de feuilles aussi, userform...),
Dans la colonne "Fichiers traités" je veux le nom des fichiers qui ont été traités,
Dans la colonne "Statut" je veux savoir si le fichier lors de son ouverture était en lecture seule ou non ou si il y a eu une autre erreur ... (exemple : OK ou NOK en lecture seule ou NOK et autre erreur)
Ce fichier est vraiement destiner à me simplifier la vie concernant les MAJ de macros car je suis confronté au lectures seule car plusieurs utilisateurs peuvent etre sur les fichiers.
Du coup j'oublie, de MAJ des macros ...
Merci pour ton aide ...
Bonjour,
Voici un premier jet concernant l'import / export des modules avec les spécificités de chacun (principalement les modules de feuilles et celui du classeur).
Pour le test, tu crées un dossier où tu mets ton classeur (Exportation_Macros.xlsm) avec le code ci-dessous dans un module standard et tu crées un second classeur en .xlsm qui va recevoir les modules, il doit être enregistré dans le même dossier. Tu lances la Sub "ImportModuleDansClasseurs()" , elle va, dans un premier temps, exporter les modules qui sont indiqués dans ton tableau en stockant leur noms et chemins dans un tableau à deux dimensions, ceci pour simplifier la suite du code. Une fois l'exportation fini, le classeur (pour l'instant il doit y en avoir qu'un pour le test enfin, c'est ce que je te conseille) devant recevoir les modules précédemment exportés est ouvert et l'importation se fait directement pour les modules standards, d'UserForm et de classes et avec suppression des anciennes lignes de code puis insertion des nouvelles lignes de code dans les modules de feuilles et celui du classeur. Comme ces derniers sont des modules de classe (.cls) il n'est pas possible, à ma connaissance, de les importer directement, ensuite, le module est supprimé. Il est impératif que les noms des modules de feuilles aient comme préfixe "Feuil" sinon, adapter dans le code.
Je n'ai pas utiliser pour l'instant les chemins indiqués dans la colonne D de ton tableau mais le chemin du classeur d'où l'importance que les classeurs soient dans le même dossier. Pour savoir si le classeur est en lecture seule ou non, j'utilise la fonction "GetAttr()" mais je ne sais pas si elle retourne le bon résultat quand le classeur cible est sur un réseau et ouvert par un autre utilisateur et comme je n'ai pas de réseau pour tester, je t'en laisse le soin :
Sub ImportModuleDansClasseurs()
Dim Cls As Workbook
Dim TestMod As Object
Dim mModule As Object
Dim TblMod() As String
Dim Tbl() As String
Dim Chemin As String
Dim I As Integer
Dim J As Integer
'le module est exporté dans le dossier contenant tous les classeurs (y compris celui contenant cette macro)
Chemin = ThisWorkbook.Path & "\"
With ThisWorkbook.Worksheets("Exportation")
'parcours les 12 lignes du tableau
For I = 2 To 12
'si pas vide, stocke dans un tableau à deux dimensions
If .Cells(I, 1).Value <> "" Then
'si c'est un module de feuille ou celui du classeur
If ThisWorkbook.VBProject.VBComponents(.Cells(I, 1).Value).Type = 100 Then
J = J + 1: ReDim Preserve TblMod(1 To 2, 1 To J)
TblMod(1, J) = .Cells(I, 1).Value
TblMod(2, J) = Chemin & .Cells(I, 1).Value & ".cls"
'les autres
Else
J = J + 1: ReDim Preserve TblMod(1 To 2, 1 To J)
TblMod(1, J) = .Cells(I, 1).Value
TblMod(2, J) = Chemin & .Cells(I, 1).Value & Choose(ThisWorkbook.VBProject.VBComponents(.Cells(I, 1).Value).Type, ".bas", ".cls", ".frm")
End If
End If
Next I
End With
'exporte les modules
If Not (Not TblMod) Then
For I = 1 To UBound(TblMod, 2): ThisWorkbook.VBProject.VBComponents(TblMod(1, I)).Export TblMod(2, I): Next I
End If
'récupère le chemin et nom des différents classeurs .xls et .xlsm
'les classeurs sont dans le même dossier que le classeur contenant cette macro
Tbl = RecupFichiers(ThisWorkbook.Path & "\", ThisWorkbook.Name)
'si le tableau a bien été initialisé...
If Not (Not Tbl) Then
For I = 1 To UBound(Tbl)
'vérifie qu'il ne soit pas en lecture seule
If GetAttr(Tbl(I)) And vbReadOnly <> 0 Then
'ouvre le classeur en cours
Set Cls = Workbooks.Open(Tbl(I))
For J = 1 To UBound(TblMod, 2)
'teste si le module est déjà présent dans le classeur ou si un module porte déjà ce nom
On Error Resume Next
Set TestMod = Cls.VBProject.VBComponents(TblMod(1, J)).CodeModule
'si pas d'erreur, le module existe donc, le supprime si ce n'est pas un module de feuille ou celui du classeur
If Err.Number = 0 Then
If Left(TblMod(1, J), 5) <> "Feuil" And TblMod(1, J) <> "ThisWorkbook" Then
Cls.VBProject.VBComponents.Remove Cls.VBProject.VBComponents(TblMod(1, J))
Err.Clear
End If
End If
'importe le module
Set mModule = Cls.VBProject.VBComponents.Import(TblMod(2, J))
'...si c'est un module de feuille ou celui du classeur :
'le module étant un module de classe, il est ajouté à la collection des modules de classe
'et non directement dans le module de la feuille concerné ou celui du classeur
If Left(TblMod(1, J), 5) = "Feuil" Or TblMod(1, J) = "ThisWorkbook" Then
'si le module de classe n'est pas vide de ligne...
If mModule.CodeModule.CountOfLines > 0 Then
'supprime toutes les lignes du module de la feuille ou du classeur et importe les lignes du module de classe...
With TestMod
.DeleteLines 1, .CountOfLines
.InsertLines .CountOfLines + 1, mModule.CodeModule.Lines(1, mModule.CodeModule.CountOfLines)
End With
End If
'...puis supprime le module de classe devenu inutile
Cls.VBProject.VBComponents.Remove mModule
End If
Next J
Cls.Close True 'enregistre et ferme
Else 'GetAttr
'si en lecture seule, l'indique en colonne C
ThisWorkbook.Worksheets("Exportation").Cells(I, 3).Value = "Lecture seule"
End If 'GetAttr
Next I
End If 'Not (Not Tbl)
End Sub
Function RecupFichiers(Chemin As String, NomClasseur As String) As String()
Dim TableauFichiers() As String
Dim Fichier As String
Dim I As Integer
Fichier = Dir(Chemin & "*.xls*")
Do While (Len(Fichier) > 0)
If Right(Fichier, 5) <> ".xlsx" And Fichier <> NomClasseur Then 'évite les ".xlsx et ce classeur"
I = I + 1
ReDim Preserve TableauFichiers(1 To I)
TableauFichiers(I) = Chemin & Fichier
End If
Fichier = Dir()
Loop
RecupFichiers = TableauFichiers()
End Function
Hello Theze,
Tout d'abord je te remercie pour le boulot
Ton code est top !
Par contre il y a une question que e me pose c'est :
Pourquoi tu passe par des tableaux concernant les fichiers à traiter ???
J'arrive pas à comprendre...
Merci.
Bonjour,
Pourquoi tu passe par des tableaux concernant les fichiers à traiter ???
Comme je l'ai dis dans mon précédent message, plus facile à mon sens pour la suite du code !
Dans la "colonne" 1 du tableau "TblMod()" je stocke le nom du module et dans la seconde, je stocke le chemin complet et l'extension appropriée et ensuite, dans la boucle principale et les instructions quelle contient, il suffit juste de savoir à quoi on veux faire référence, le nom ou le chemin.
Maintenant, tu peux l'éviter, il te faut alors faire référence à la colonne A pour les noms et la colonne D pour les chemins. J'ai préféré utilisé un tableau pour encapsuler ça avec ces instructions :
If ThisWorkbook.VBProject.VBComponents(.Cells(I, 1).Value).Type = 100 Then
J = J + 1: ReDim Preserve TblMod(1 To 2, 1 To J)
TblMod(1, J) = .Cells(I, 1).Value
TblMod(2, J) = Chemin & .Cells(I, 1).Value & ".cls"
'les autres
Else
J = J + 1: ReDim Preserve TblMod(1 To 2, 1 To J)
TblMod(1, J) = .Cells(I, 1).Value
TblMod(2, J) = Chemin & .Cells(I, 1).Value & Choose(ThisWorkbook.VBProject.VBComponents(.Cells(I, 1).Value).Type, ".bas", ".cls", ".frm")
End If
on isole du reste du code ce type de test pour plus de compréhension !
Autre chose qu'il te faut savoir concernant les UserForm, durant l'exportation, le compilateur, contrairement aux autres objets, crée deux fichiers, le .frm qui est le fichier contenant les propriétés (certaines) du l'UserForm avec le code que contient le module et le .frx qui contient les objets posés sur l'UserForm avec leur propriétés, d'où la nécessité d'utiliser l'export et l'import plutôt que des fichiers .txt comme tu as fait état dans un de tes posts car si tu fais une modif graphique sur l'UserForm, elle sera aussi reportée lors de l'importation.
Hello thèse,
Ok très bien
Ok pour les userforms et merci de l'info car je ne savais pas.
Je vais en créer d'ici quelques semaines et du coup en exporter par la même occasion.
Merci pour ton aide et tes infos.
content de t'avoir aidé