Bonjour,
A partir d'une feuille excel je voudrais exporter le contenu vers un autre fichier excel.
J'ai une liste non ordonnée de locaux avec des switch.
Les locaux ne sont pas specialement l'un apres l'autre, exemple un local peut etre mentionné au début, et je peux le retrouver a mi chemin.
Un autre :
Au debut j'ai le LocalName = SZ36I et le SwitchName = SZW600 donc je crée la feuille (dans le classeur 2) nommée SZ36I avec a la ligne 3 la valeur SZW600.
Ensuite ligne d'apres (classeur 1), j'ai LocalName = SZ28U et le SwitchName = SZW234 donc je crée la feuille (dans le classeur 2) nommée SZ28U avec a la ligne 3 la valeur SZW234.
Apres, j'ai encore le LocalName = SZ36I mais avec le SwitchName = SZW768, donc là, la ligne dispo est la 8 c'est ici que je devrais inserer le switch.
Et la j'ai une erreur :
Donc en fait a chaque fois que je reviens sur un onglet deja créer il bug lors de la fusion ...erreur '1004' :
erreur définie par l'aplication ou par l'objet
Code ppl :
Et les fonctions :
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102 Private Sub export_Click() Dim cl1 As Workbook, cl2 As Workbook Dim f1 As Worksheet Set cl1 = ActiveWorkbook Set f1 = cl1.Worksheets("Etat Switch") Dim Fichier As String, nomclasseur As String 'ajoute un nouveau classeur Application.Workbooks.Add 'nomme ton classeur nomclasseur = Format(Date, "DD-MM-YYYY") & "-" & "Etat_Switch" 'donne le chemin et l'extension du fichier Fichier = "C:\User\...\Documents\Stagiaire_POUCET\Switch\" & nomclasseur & ".xls" 'sauvegarde le nouveau fichier ActiveWorkbook.SaveAs Fichier Set cl2 = ActiveWorkbook 'fais le tour du tableau pour trouver tout les switch de tout les locaux For i = 1 To 5000 'si c'est un switch prend la première et tout le reste ce fait à partir de cette première ligne '* avant et apres car dans le tableau le switch commence par un espace If f1.Cells(i, 3).Value Like "*swz*" Then SwitchName = f1.Cells(i, 3).Value LocalName = f1.Cells(i, 2).Value dbt_tab_switch = i 'depuis le premier local trouver la ligne de fin du switch For j = dbt_tab_switch To dbt_tab_switch + 55 'si on arrive sur une ligne blanche mais que les ports du switch sont encore present apres la separation If ((f1.Cells(j, 3) = "") And (f1.Cells(j + 3, 2) = LocalName) And (f1.Cells(j + 3, 4) = "FA")) Then j = j + 2 'sinon si le nom est différent du switch ou qu'apres la separation c'est un autre switch le tableau est fini ElseIf ((f1.Cells(j, 3) <> SwitchName) Or ((f1.Cells(j, 3) = "") And ((f1.Cells(j + 4, 2) <> SwitchName) Or (f1.Cells(j + 4, 4) <> "FA")))) Then fin_tab_switch = j - 1 j = dbt_tab_switch + 55 End If Next j 'pour donner à i la debut du prochain switch 'si il y a une sépération (3 ligne entre chaque séparation i recoit i + les trois lignes If ((f1.Cells(fin_tab_switch + 1, 3) = "") And (f1.Cells(fin_tab_switch + 3, 3) <> "")) Then i = fin_tab_switch + 3 'sinon si le tableau commence la ligne d'apres ElseIf (f1.Cells(fin_tab_switch + 1, 3) <> "") Then i = fin_tab_switch + 1 'sinon c'est que le tableau de tout les switch est fini Else: i = 5000 End If 'ICI POUR LA CREATION DES LOCAUX proc = create_locaux(cl2, LocalName, SwitchName, dbt_tab_switch, fin_tab_switch) proc = create_switch(cl2, LocalName, SwitchName, dbt_tab_switch, fin_tab_switch) End If Next i For Each objFeuille In cl2.Sheets If objFeuille.Name Like "Feuil*" Then Application.DisplayAlerts = False objFeuille.Delete Application.DisplayAlerts = True End If Next End Sub
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 '|||||||| CREATION LOCAUX |||||||| Public Function create_locaux(ByRef cl2 As Excel.Workbook, ByVal LocalName As String, ByVal SwitchName As String, ByVal dbt_tab_switch As Integer, ByVal fin_tab_switch As Integer) FeuilleExiste = False For Each objFeuille In cl2.Sheets If objFeuille.Name = LocalName Then FeuilleExiste = True Exit For End If Next 'si le local n'existe pas on le crée sauf pour la colonne du switch chwas1 et chwas2 'et que le LocalName n'est pas vide If ((FeuilleExiste = False) And (SwitchName <> " swzas1") And (SwitchName <> " swzas2")) And (LocalName <> "") Then 'création de la feuille cl2.Sheets.Add 'renomme la feuille cl2.ActiveSheet.Name = LocalName End If End Function '|||||||| FIN CREATION LOCAUX |||||||| '|||||||| CREATION SWITCH |||||||| Public Function create_switch(ByRef cl2 As Excel.Workbook, ByVal LocalName As String, ByVal SwitchName As String, ByVal dbt_tab_switch As Integer, ByVal fin_tab_switch As Integer) Dim f2 As Worksheet Set f2 = cl2.Sheets(LocalName) 'calcul de la premiere ligne dispo pour inserer le switch For l = 3 To 103 Step 5 If (f2.Cells(l, 2) = "") Then ligne1 = l l = 103 End If Next l 'fusion de la première ligne disponible du switch (pour son nom) f2.Range(Cells(ligne1, 2), Cells(ligne1, 27)).Select With Selection .MergeCells = True .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .Value = SwitchName End With End Function
Aidez moi !! Il me reste que ca pour finir mon projet ...
Cordialement
Benjamin
Partager