Novice Macro basique
Bonsoir à tous,
Je souhaite inséré une macro dans un fichier de traitement pour effectué une MAJ automatique de celui ci avec des nouvelles données.
2 fichiers excel dans un même dossier :
- Fichier de traitement
- Nouvel import
Le premier fichier est mis en forme etc.... Le deuxième contient les nouvelles données brutes tiré d'un export
A savoir que le second fichier portera toujours le même nom, sera toujours au même emplacement, mais contiendra de nouvelles données.
J'ai voulu enregistrer une macro toute simple dans le premier fichier > je me rend dans le second fichier, je supprime les lignes / colonnes etc qui ne m’intéresse pas... copie colle l'ensemble des données restantes a la suite de mes données dans mon premier fichier.
J'ai ensuite insérer un "bouton" que j'ai relié a cette macro
quand je clique dessus ensuite :
Pouvez vous m'aider svp ?
Voila BrunoM45, merci d'avance pour ton aide
Bonsoir le fil, bonsoir le forum,
Quand tu travailles sur plusieurs classeurs et par conséquents, sur plusieurs onglets, il te faut toujours spécifier dans le code le classeur et l'ongle, sinon tu vas droit à des surprises et à des bugs.
Si j'ai bien compris, parce qu'avec ton code ce n'est vraiment pas clair, voici une proposition à tester :
Sub TestNouvelImport()
Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim TS As ListObject 'déclare la variable TS (Tableau Structuré)
Dim CA As String 'déclare la variable CA (Chemin d'Accès)
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim NL As Integer 'déclare la variable NL (Nombre de lignes)
Set CD = ThisWorkbook 'définit la classeur Destination
Set OD = CD.Worksheets("CAPELLA") 'définit l'onglet Destination
Set TS = OD.ListObjects("IMPORTSéTRAITEMENTS") 'définit le tableau structuré TS
CA = CD.Path & "\" 'définit le chemin d'accès CA
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
Set CS = Workbooks("nouvel-export.xls") 'définit le classeur source CS (génère un erreur si ce classeur n'est pas ouvert)
If Err <> 0 Then 'condition : si une erreur a été générée
Err.Clear 'supprime l'erreur
Set CS = Workbooks.Open(CA & "nouvel-export.xls") 'définit la classeur source CS en l'ouvrant
End If 'fin de la condition
On Error GoTo 0 'annule la gestion des erreurs
Set OS = CS.Worksheets("Mes_Entites - A_Traiter") 'définit l'onglet source
OS.Rows("1:1").Delete Shift:=xlUp 'supprime la ligne 1 de l'onglet source
OS.Columns("A:D").Delete Shift:=xlToLeft 'supprime les colonnes A à D de l'onglet source
NL = OS.Range("A1").CurrentRegion.Rows.Count 'définit le nombre de lignes NL de la plage des données de l'onglet source
TS.DataBodyRange.Delete 'efface les anciennes données de TS
TS.Resize TS.Range.Resize(NL, TS.ListColumns.Count) 'redimensionne TS avec NL lignes
OS.Range("A1").CurrentRegion.Copy TS.DataBodyRange(1, 1) 'copie les donnée de OS et les colle dans TS
TS.DataBodyRange.RemoveDuplicates Columns:=1, Header:=xlYes 'supprime les doublons de la colonne 1 de TS
End SubMerci pour ta réponse ThauThème, j'essai de découvrir les macro
j'ai simplement effectué un enregistrement "manuel" d'une nouvelle macro et voici le code affiché
J'ai trouvé une autre solution qui fonctionne mais encore merci a toi pour la réponse: