Bonjour, Bonjour,
Je cherche la méthode pour importer des données puis les répercuter sur un (ou deux) autre onglet en fonction d'une valeur commune.
Voila mon premiers bout de code (basé sur quelque poste du forum mais la je séche)
Sub test()
Dim classeurDestination As Workbook
Dim classeurSource As Workbook
Dim onglet As Worksheet
Dim plage As Range
Application.ScreenUpdating = False
Worksheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Move Before:=Sheets(1)
ActiveSheet.Name = "Données"
' On rempli de l'entête du tableau
Cells(2, 1).Value = "CODE_PIECE"
Cells(2, 2).Value = "CODE_PIECE_ANCIEN"
Cells(2, 3).Value = "NOM_USAGE"
Cells(2, 4).Value = "NOM_NORMALISE"
Cells(2, 5).Value = "NOM_USAGE"
Cells(2, 6).Value = "NOM_NORMALISE"
Cells(2, 7).Value = "SECTEUR_ACTIVITE"
Cells(2, 8).Value = "SOUS_SECTEUR_ACTIVITE"
Cells(2, 9).Value = "CODE_UG"
Cells(2, 10).Value = "CODE_UA"
Cells(2, 11).Value = "OCCUPANT_EXTERNE"
Cells(2, 12).Value = "CODE_POLE"
Cells(2, 13).Value = "SERVICE"
Cells(2, 14).Value = "DISPONIBILITE"
Cells(2, 15).Value = "ACCES_HANDICAPES"
Cells(2, 16).Value = "SURFACE"
Cells(2, 17).Value = "HSP"
Cells(2, 18).Value = "HSFP"
Cells(2, 19).Value = "VOLUME"
Cells(2, 20).Value = "RISQUE_LABORATOIRE"
Cells(2, 21).Value = "AMIANTE"
Cells(2, 22).Value = "NATURE_SOL"
Set classeurDestination = ThisWorkbook
' On demande le nom du fichier à ouvrir et on le note en A1
Cells(1, 1).Value = Application.GetOpenFilename("Fichier Excel (*.xls), *.xls")
'On ouvre le classeur choisi noté en A1
Set classeurSource = Application.Workbooks.Open(Cells(1, 1).Value, , True)
'copier l'onglet complet de la "Feuil1" du classeur source vers la "Feuil1" du classeur destination
'classeurSource.Sheets("S01").Cells.Copy classeurDestination.Sheets("Données").Range("A1")
'Pour chaque onglet de la collection "worksheets" du classeur source.
For Each onglet In classeurSource.Worksheets 'pour tous les onglets du classeur source
' sauf pour l'onglet MODE EMPLOI
If onglet.Name <> "MODE EMPLOI" Then 'si l'onglet est different de MODE EMPLOI
'Voila je séche ici.....
'définition de la plage dans le classeur source
'choisir derniere ligne non vide de la colonne B,
'copier la ligne de BX à UX dans le fichier de destination dans l'onglet Données
'Retour dans le fichier source et aller à la ligne au dessus et ainsi de suite jusqu'a la ligne 14
End If
Next
classeurSource.Close
'MsgBox "!!YouPiDou!!"
End Sub
Suis parti dans la bonne direction?
Je cherche la méthode pour importer des données puis les répercuter sur un (ou deux) autre onglet en fonction d'une valeur commune.
Voila mon premiers bout de code (basé sur quelque poste du forum mais la je séche)
Sub test()
Dim classeurDestination As Workbook
Dim classeurSource As Workbook
Dim onglet As Worksheet
Dim plage As Range
Application.ScreenUpdating = False
Worksheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Move Before:=Sheets(1)
ActiveSheet.Name = "Données"
' On rempli de l'entête du tableau
Cells(2, 1).Value = "CODE_PIECE"
Cells(2, 2).Value = "CODE_PIECE_ANCIEN"
Cells(2, 3).Value = "NOM_USAGE"
Cells(2, 4).Value = "NOM_NORMALISE"
Cells(2, 5).Value = "NOM_USAGE"
Cells(2, 6).Value = "NOM_NORMALISE"
Cells(2, 7).Value = "SECTEUR_ACTIVITE"
Cells(2, 8).Value = "SOUS_SECTEUR_ACTIVITE"
Cells(2, 9).Value = "CODE_UG"
Cells(2, 10).Value = "CODE_UA"
Cells(2, 11).Value = "OCCUPANT_EXTERNE"
Cells(2, 12).Value = "CODE_POLE"
Cells(2, 13).Value = "SERVICE"
Cells(2, 14).Value = "DISPONIBILITE"
Cells(2, 15).Value = "ACCES_HANDICAPES"
Cells(2, 16).Value = "SURFACE"
Cells(2, 17).Value = "HSP"
Cells(2, 18).Value = "HSFP"
Cells(2, 19).Value = "VOLUME"
Cells(2, 20).Value = "RISQUE_LABORATOIRE"
Cells(2, 21).Value = "AMIANTE"
Cells(2, 22).Value = "NATURE_SOL"
Set classeurDestination = ThisWorkbook
' On demande le nom du fichier à ouvrir et on le note en A1
Cells(1, 1).Value = Application.GetOpenFilename("Fichier Excel (*.xls), *.xls")
'On ouvre le classeur choisi noté en A1
Set classeurSource = Application.Workbooks.Open(Cells(1, 1).Value, , True)
'copier l'onglet complet de la "Feuil1" du classeur source vers la "Feuil1" du classeur destination
'classeurSource.Sheets("S01").Cells.Copy classeurDestination.Sheets("Données").Range("A1")
'Pour chaque onglet de la collection "worksheets" du classeur source.
For Each onglet In classeurSource.Worksheets 'pour tous les onglets du classeur source
' sauf pour l'onglet MODE EMPLOI
If onglet.Name <> "MODE EMPLOI" Then 'si l'onglet est different de MODE EMPLOI
'Voila je séche ici.....
'définition de la plage dans le classeur source
'choisir derniere ligne non vide de la colonne B,
'copier la ligne de BX à UX dans le fichier de destination dans l'onglet Données
'Retour dans le fichier source et aller à la ligne au dessus et ainsi de suite jusqu'a la ligne 14
End If
Next
classeurSource.Close
'MsgBox "!!YouPiDou!!"
End Sub
Suis parti dans la bonne direction?