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 103 104 105 106 107 108
| Private Sub CBOK_Click()
'Attention les declaration de variables doivent se faire ici si elles ne sont utilisé quand dans cette Sub
Dim histoP As String
Dim histoS As String
Dim FhistoP As String
Dim FhistoS As String
Dim NomEntete As String
Dim FichierCB As Workbook
Dim OngletDonnee As Worksheet, OngletCB As Worksheet
'Un conseil met des noms de variables explicites, ça te facilitera les modif
Dim n As Integer
Dim k As Integer
Dim i As Integer
Dim j As Integer
Dim Ui As Range, Jour As Range 'Toujours au moins une majuscule dans les variables, on les repere plus facilement dans le code, ainsi que les erreur de frappe
Dim TheCell As Range, TheCellDate As Range
Dim NumColSource As Integer, NumRowSource As Long
Dim NumColDestination As Integer, NumRowDestination As Long
Select Case CBonglet.value
Case "Réa 2009"
histoP = "2009\histo clotures prod 2009.xls"
histoS = "2009\histo clotures SAV2009.xls"
FhistoP = "histo clotures prod 2009"
FhistoS = "histo clotures SAV2009"
Case "Réa 2010"
histoP = "2010\histo clotures prod.xls"
histoS = "2010\histo clotures SAV.xls"
FhistoP = "histo clotures prod"
FhistoS = "histo clotures SAV"
Case "Réa 2011"
histoP = "2011\histo clotures prod.xls"
histoS = "2011\histo clotures SAV.xls"
FhistoP = "histo clotures prod"
FhistoS = "histo clotures SAV"
Case "Ins 2009"
histoP = "2009\histo instances prod 2009.xls"
histoS = "2009\histo instances SAV2009.xls"
FhistoP = "histo instances prod 2009"
FhistoS = "histo instances SAV2009"
Case "Ins 2010"
histoP = "2010\histo instances prod.xls"
histoS = "2010\histo instances SAV.xls"
FhistoP = "histo instances prod"
FhistoS = "histo instances SAV"
Case "Ins 2011"
histoP = "2011\histo instances prod.xls"
histoS = "2011\histo instances SAV.xls"
FhistoP = "histo instances prod"
FhistoS = "histo instances SAV"
End Select
'Ouverture du fichier historique prod
Set FichierCB = Workbooks.Open(Filename:= _
"O:\ENTITE\PSCA.vqr\ConduiteActivité.vqr\cellule supervision\Tableaux de bord\" & histoP)
Application.CommandBars("Stop Recording").Visible = False
Set OngletDonnee = FichierCB.Worksheets("Données")
Set OngletCB = Workbooks("saisonnalité N S").Worksheets(CBonglet) 'Classeur + Feuille
' comparaison
For Each Ui In OngletDonnee.[F1:AA1] 'precise toujours Classeur+Feuille
'On supprime le 1er caracter de la cellule pour avoir le nom d'entete que l'on va rechercher sur l'autre feuille
'_2NA -> 2NA
NomEntete = Mid(Ui, 2)
'Ici on utilise find pour trouver l'entete dans l'autre fichier
Set TheCell = OngletCB.Rows(1).Find(NomEntete, , xlValues, xlWhole, xlByRows)
'On verifie si l'entete a été trouvée
If Not TheCell Is Nothing Then
'L'entete existe
'On memorise le numero de la colonne correspondante
NumColDestination = TheCell.Column
NumColSource = Ui.Column
'Ensuite tu fais pareil avec la date
'Dans la partie apres le In, je me place sur la derniere ligne du tableau (rows.count) et je remonte jusqu'a la derniere cellule non vide (End(xlUp)
'On a donc une plage qui va de C4 jusqu'a la derniere cellule de la colonne C
For Each Jour In OngletDonnee.Range("C4", OngletDonnee.Cells(OngletDonnee.Rows.Count, "C").End(xlUp))
'Je ne sais pas trop si le format date ne va pas géner, à voir
Set TheCellDate = OngletCB.Columns("A").Find(Jour, , , xlWhole, xlByColumns)
'On verifie si la date à été trouvé
If Not TheCellDate Is Nothing Then
'On a une correspondance
'On memorise le numero de la ligne
NumRowDestination = TheCellDate.Row
NumRowSource = Jour.Row
'On place la valeur Source dans la cellule destination
OngletCB.Cells(NumRowDestination, NumColDestination) = OngletDonnee.Cells(NumRowSource, NumColSource)
End If
Next
End If
'On remet a "zero" les variable range
Set TheCell = Nothing
Set TheCellDate = Nothing
Next
End Sub |
Partager