Salut,
J’aimerais bénéficier de votre aide sur la réalisation d’une macro, je bute sur une boucle.
J’explique un peu ma macro :
Pour chaque référence dans un fichier (PDP), elle recherche les références dont la colonne z (26) est égale à « Alerte ».
Ensuite, elle recherche si cette référence est présente dans un fichier (tableau de bord), si elle n’est pas présente, elle colle des données en fin de tableau.
Le problème c’est qu’elle colle autant de fois la référence qu’il y a de nombre de ligne dans le tableau de bord. J’aimerais qu’elle colle cette donnée une seule fois.
Le problème doit venir de la boucle J mais je ne vois pas comment je peux solutionner cela.
Merci d’avance
Sub MaJ_TDB()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim nblignes As Integer
Dim FichierPDP As String
Dim CheminPDP As String
Dim couplerecherché As String
Dim coupletrouvé As String
CheminPDP = Sheets("chemins").Cells(9, 3).Value
FichierPDP = Sheets("chemins").Cells(10, 3).Value
'Compter le nombre de lignes de la tableau de bord des arrêts de prod.
nblignes = Sheets("Tableau Suivi").Range("B5").End(xlDown).Row
StartAnalyse = 5
EndAnalyse = Workbooks("Tableau de bord arrêt de prod SC.xlsm").Sheets("Tableau Suivi").Range("C5").End(xlDown).Row
CheminPDP = Sheets("chemins").Cells(9, 3).Value
FichierPDP = Sheets("chemins").Cells(10, 3).Value
'Ouvrir le fichier PDP
Call Ouvrir(CheminPDP, FichierPDP)
For i = 2 To Workbooks("Fichier PDP Brut Light.xls").Sheets("PlanProduction").Range("a6").End(xlDown).Row
If Workbooks("Fichier PDP Brut Light.xls").Sheets("PlanProduction").Cells(i, 26).Value = "Alerte" Then
'recherche le couple référence/site dans le PDP.
couplerecherché = Workbooks("Fichier PDP Brut Light.xls").Sheets("PlanProduction").Cells(i, 2).Value & _
Workbooks("Fichier PDP Brut Light.xls").Sheets("PlanProduction").Cells(i, 5).Value
'recherche le couple référence/site dans le tableau de bord des arrêts de prod.
trouvé = 0
For j = StartAnalyse To EndAnalyse
coupletrouvé = Workbooks("Tableau de bord arrêt de prod SC.xlsm").Sheets("Tableau Suivi").Cells(j, 3).Value & _
Workbooks("Tableau de bord arrêt de prod SC.xlsm").Sheets("Tableau Suivi").Cells(j, 5).Value
If (couplerecherché) <> (coupletrouvé) Then
' Si le couple ref/site n'est pas trouvé recopier les valeurs
m = 0
m = m + 1
n = nblignes + m
'Coller les données
Workbooks("Tableau de bord arrêt de prod SC.xlsm").Sheets("Tableau Suivi").Cells(n, 4).Value = _
Workbooks("Fichier PDP Brut Light.xls").Sheets("PlanProduction").Cells(x, 26).Value
Workbooks("Tableau de bord arrêt de prod SC.xlsm").Sheets("Tableau Suivi").Cells(n, 3).Value = _
Workbooks("Fichier PDP Brut Light.xls").Sheets("PlanProduction").Cells(x, 2).Value
trouvé = 1
End If
Next
End If
Next
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
J’aimerais bénéficier de votre aide sur la réalisation d’une macro, je bute sur une boucle.
J’explique un peu ma macro :
Pour chaque référence dans un fichier (PDP), elle recherche les références dont la colonne z (26) est égale à « Alerte ».
Ensuite, elle recherche si cette référence est présente dans un fichier (tableau de bord), si elle n’est pas présente, elle colle des données en fin de tableau.
Le problème c’est qu’elle colle autant de fois la référence qu’il y a de nombre de ligne dans le tableau de bord. J’aimerais qu’elle colle cette donnée une seule fois.
Le problème doit venir de la boucle J mais je ne vois pas comment je peux solutionner cela.
Merci d’avance
Sub MaJ_TDB()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim nblignes As Integer
Dim FichierPDP As String
Dim CheminPDP As String
Dim couplerecherché As String
Dim coupletrouvé As String
CheminPDP = Sheets("chemins").Cells(9, 3).Value
FichierPDP = Sheets("chemins").Cells(10, 3).Value
'Compter le nombre de lignes de la tableau de bord des arrêts de prod.
nblignes = Sheets("Tableau Suivi").Range("B5").End(xlDown).Row
StartAnalyse = 5
EndAnalyse = Workbooks("Tableau de bord arrêt de prod SC.xlsm").Sheets("Tableau Suivi").Range("C5").End(xlDown).Row
CheminPDP = Sheets("chemins").Cells(9, 3).Value
FichierPDP = Sheets("chemins").Cells(10, 3).Value
'Ouvrir le fichier PDP
Call Ouvrir(CheminPDP, FichierPDP)
For i = 2 To Workbooks("Fichier PDP Brut Light.xls").Sheets("PlanProduction").Range("a6").End(xlDown).Row
If Workbooks("Fichier PDP Brut Light.xls").Sheets("PlanProduction").Cells(i, 26).Value = "Alerte" Then
'recherche le couple référence/site dans le PDP.
couplerecherché = Workbooks("Fichier PDP Brut Light.xls").Sheets("PlanProduction").Cells(i, 2).Value & _
Workbooks("Fichier PDP Brut Light.xls").Sheets("PlanProduction").Cells(i, 5).Value
'recherche le couple référence/site dans le tableau de bord des arrêts de prod.
trouvé = 0
For j = StartAnalyse To EndAnalyse
coupletrouvé = Workbooks("Tableau de bord arrêt de prod SC.xlsm").Sheets("Tableau Suivi").Cells(j, 3).Value & _
Workbooks("Tableau de bord arrêt de prod SC.xlsm").Sheets("Tableau Suivi").Cells(j, 5).Value
If (couplerecherché) <> (coupletrouvé) Then
' Si le couple ref/site n'est pas trouvé recopier les valeurs
m = 0
m = m + 1
n = nblignes + m
'Coller les données
Workbooks("Tableau de bord arrêt de prod SC.xlsm").Sheets("Tableau Suivi").Cells(n, 4).Value = _
Workbooks("Fichier PDP Brut Light.xls").Sheets("PlanProduction").Cells(x, 26).Value
Workbooks("Tableau de bord arrêt de prod SC.xlsm").Sheets("Tableau Suivi").Cells(n, 3).Value = _
Workbooks("Fichier PDP Brut Light.xls").Sheets("PlanProduction").Cells(x, 2).Value
trouvé = 1
End If
Next
End If
Next
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub