Bonjour, Bonjour,
J'en appel encore à votre savoir
J'ai un (ou plutot plusieurs) fichiers, avec plusieurs onglets (nom défini dans une table mais variblable), il me faut rappatrié les données contenues dans les differents onglets (sauf un nommé toujours de la même maniere) dans un autre fichiers, avec toutes les lignes les une à la suite des autres
Le principe retenue : début cellule B14, s'il y a qq chose copie de la ligne entiere (car il y a des cellules vides mais qu'il faut garder absolument) dans le tableau de destination en commencé à A3, puis la ligne suivante etc etc, lorsque l'on tombe sur une cellule vide en colonne B on passe à l'autre onglet.
Les lignes doivent être copiées telles quelles, c'est à dire avec la même mise en forme, et les cellules vides.
Ensuite une fois le fichiers reconstituer, je devrai faire une recherche par equilavance dans 2 onglets de mon fichiers de destination et s'il y à un équilavent, copier les données dans l'onglet correspondant par exemple cellule CX dans DX etc, mais toujours dans le même ordre.
Voici mon début de code (récuperer à droite à gauche) mais je ne suis pas sur d'etre partit dans la bonne direction et surtout la je seche depuis un moment....
Et la je bloque....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 Sub Importation() 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) 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 End If Next 'classeurSource.Close 'MsgBox "!!YouPiDou!!" End Sub
J'ai testé tout plein de morceau mais sans succes....
Il faudrait que je definisse la plage dans le classeur source?
Choisir derniere ligne non vide de la colonne B et remonter ?
Si vous avez une idée....
Merci d'avance
Voici le type de fichier, sachant qu'ils auront tous la même forme.
Et le fichier plateforme me sert d'echange entre excel et Autocad
http://www.cijoint.fr/cjlink.php?fil...cij05A3c8R.zip
Partager