Bonjour,
J'utilise le code ci-dessous pour obtenir le report de données d'un fichier à l'autre.
J'ai 2 soucis :
Les reports ne semble pas se faire correctement (j'ai bien des données reportées mais ce ne sont pas les bonnes, peut être y-a-t-il un problème de ligne)
L'exécution est extrêmement lente (pourriez-vous m'aider à accélérer l'exécution ?)
2 fichiers en pièce-jointe avec explications sur feuille explications
Merci beaucoup pour votre aide.
J'utilise le code ci-dessous pour obtenir le report de données d'un fichier à l'autre.
J'ai 2 soucis :
Les reports ne semble pas se faire correctement (j'ai bien des données reportées mais ce ne sont pas les bonnes, peut être y-a-t-il un problème de ligne)
L'exécution est extrêmement lente (pourriez-vous m'aider à accélérer l'exécution ?)
2 fichiers en pièce-jointe avec explications sur feuille explications
Merci beaucoup pour votre aide.
Code:
Sub ACTU()
Dim NumSem, NOM, CAUSE, Mois, AdresseNom As String
Dim REM As Boolean
Dim PlanCong, Plan As Workbook
Dim result As Range
Dim Jour As Byte
NumSem = UCase(Range("B1").Value)
Mois = Range("A1").Value & " " & Range("A2").Value
Application.ScreenUpdating = False
Set PlanCong = Workbooks.Add("C:\ACT2017\DEVO\Plan_Orga_2017.xlsx")
Set Plan = Workbooks("PLANNIF 2017")
Workbooks("PLANNIF 2017").Activate
Range("A23", "A146").Select 'C'est là que se trouvent les noms
For Each Cell In Selection
NOM = Cell.Value
If NOM<> "" Then
For i = 2 To 10 Step 2
PlanCong.Worksheets(Mois).Activate 'on active la feuille
If NumMois(Month(Plan.Sheets(NumSem).Cells(2, i).Value)) & " 2017" <> Mois Then
PlanCong.Worksheets(NumMois(Month(Plan.Sheets(NumSem).Cells(2, i).Value)) & " 2017").Activate
Mois = ActiveSheet.Name
End If
Set result = PlanCong.Worksheets(Mois).Range("A1:A92").Find(What:=NOM, LookIn:=xlValues)
If result Is Nothing Then GoTo fin
AdresseNom = result.Address
Jour = Day(Plan.Worksheets(NumSem).Cells(2, i).Value
Select Case Range(AdresseNom).Offset(0, Jour).Value
Case Is = "M"
Cell.Offset(0, i).Value = "M"
Case Is = "R"
Cell.Offset(0, i).Value = "R"
Case Is = "T"
Cell.Offset(0, i).Value = "T"
Case Else
If Range(AdresseNom).Offset(0, Jour).Value <> "" Then
Cell.Offset(0, i).Value = Range(AdresseNom).Offset(0, Jour).Value '"ABS"
Else
Cell.Offset(0, i).Value = ""
End If
End Select
Select Case Range(AdresseNom).Offset(-1, Jour).Value
Case Is = "M"
Cell.Offset(0, i - 1).Value = "M"
Case Is = "R"
Cell.Offset(0, i - 1).Value = "R"
Case Is = "T"
Cell.Offset(0, i - 1).Value = "T"
Case Else
If Range(AdresseNom).Offset(-1, Jour).Value <> "" Then
Cell.Offset(0, i - 1).Value = Range(AdresseNom).Offset(-1, Jour).Value '"ABS"
Else
Cell.Offset(0, i - 1).Value = ""
End If
End Select
Next i
End If
Next
PlanCong.Close SaveChanges:=False
Application.ScreenUpdating = True
Set PlanCong = Nothing
End Sub