VBA problème boucle (for...next)

nico91410

XLDnaute Nouveau
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
 

francedemo

XLDnaute Occasionnel
Re : VBA problème boucle (for...next)

bonjour
à tester:
à la place de
If (couplerecherché) <> (coupletrouvé) Then
mettre
if (couplerecherché) = (coupletrouvé) Then exit for
If j=Endanalyse and (couplerecherché) <> (coupletrouvé) Then
...la suite de ta macro

à+
 

nico91410

XLDnaute Nouveau
Re : VBA problème boucle (for...next)

Super !!!!

Ça marche, l'objet qui comptait le nombre de ligne dans le tableau n'était pas placé dans la boucle.

Compter le nombre de lignes de la tableau de bord des arrêts de prod.
nblignes = Workbooks("Tableau de bord arrêt de prod SC.xlsm").Sheets("Tableau Suivi").Range("C5").End(xlDown).Row


Du coup, ça me remplaçait à chaque fois la dernière ligne.
 

Discussions similaires

Statistiques des forums

Discussions
312 492
Messages
2 088 943
Membres
103 989
dernier inscrit
jralonso