Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

à+
 

francedemo

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

c'est pas ce que tu veux ?
si tu joint un fichier (sans données confidentielles) avec quelques explications, ça sera plus simple de comprendre exactement ce que tu veux
 

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…