XL 2010 Boucle while Not ... Wend avec condition vraie

Izbeul

XLDnaute Nouveau
Bonjour,

Nouvelle sur le site et je suis désespérément à la recherche d'une solution à mon problème.

Je précise que tout ce que je sais sur le VBA, je l'ai appris sur des forum.

Voici mon code :

Option Base 1
Option Explicit

Sub Suivi_Tests()

Dim DateFinPer As Date
Dim DateDebutPer As Date
Dim rngDate1 As Range, rngDate2 As Range
Dim k As Long, n As Long, I As Long, R As Date, kmax As Long, Nmax As Long
Dim var1 As Long, var2 As Long, var3 As Long

Dim wf As WorksheetFunction
Set wf = Application.WorksheetFunction

Application.Worksheets("Stabilité_Pilote").Select
DateFinPer = Sheets("Stabilité_Pilote").Range("H5")
DateDebutPer = Sheets("Stabilité_Pilote").Range("H4")

If DateDebutPer > DateFinPer Then
MsgBox "La date de début de période doit être antérieure à celle de fin de période"
GoTo derniereligne

End If

'Application.Worksheets("Sauvegarde_DCS").Select
Worksheets("Sauvegarde_DCS").Range("A:A").NumberFormat = "dd/mm/yy hh:mm;@"

With Worksheets("Sauvegarde_DCS").Range("A3:A40000")

Set rngDate1 = Sheets("Sauvegarde_DCS").Range("A3:A40000").Find(DateDebutPer)
Set rngDate2 = Sheets("Sauvegarde_DCS").Range("A3:A40000").Find(DateFinPer)

If rngDate1 Is Nothing And rngDate2 Is Nothing Then
MsgBox "Aucune donnée correspondante aux dates spécifiées n'a été extraite"
Exit Sub

Else:

If rngDate1 Is Nothing Then
MsgBox "Les données correspondantes à la date de début spécifiée n'ont pas été extraites"
Exit Sub

Else:
If rngDate2 Is Nothing Then
MsgBox "Les données correspondantes à la date de fin spécifiée n'ont pas été extraites"
Exit Sub

Else:

End If
End If
End If

End With

'Application.Worksheets("Sauvegarde_DCS").Select
I = Worksheets("Sauvegarde_DCS").Cells(Application.Rows.Count, "A").End(xlUp).Row + 3

k = 3
'R = Application.WorksheetFunction.VLookup(DateDebutPer, Range("A3:A100"), 1, False)
While Not Cells(k, 1) = DateDebutPer
k = k + 1
Wend

kmax = k

If kmax > 30000 Then
MsgBox " La date de début de période choisie n'est pas disponible dans les données extraites"
GoTo derniereligne
Else

End If


n = 3
While Not Cells(n, 1) = DateFinPer
n = n + 1
Wend

Nmax = n

If Nmax > 30000 Then
MsgBox " La date de fin de période choisie n'est pas disponible dans les données extraites"
GoTo derniereligne
Else

End If

Application.Worksheets("Stabilité_Pilote").Select

var1 = kmax
var2 = Nmax
var3 = var2 - var1 + 1

' SUIVI DES PARAMETRES DE PERFORMANCE DU PILOTE

' Taux de captage du CO2

Application.Worksheets("Stabilité_Pilote").Activate
ActiveSheet.ChartObjects("Taux_Captage_CO2").Activate
ActiveChart.Axes(xlCategory).Select
ActiveSheet.ChartObjects("Taux_Captage_CO2").Activate
ActiveChart.PlotArea.Select
ActiveSheet.ChartObjects("Taux_Captage_CO2").Activate
ActiveChart.Axes(xlCategory).Select
ActiveSheet.ChartObjects("Taux_Captage_CO2").Activate
ActiveChart.SeriesCollection(1).XValues = "='Sauvegarde_DCS'!$A" & var1 & ":$A" & var2
ActiveChart.SeriesCollection(1).Values = "='Sauvegarde_DCS'!$C" & var1 & ":$C" & var2
ActiveChart.SeriesCollection(2).XValues = "='Sauvegarde_DCS'!$A" & var1 & ":$A" & var2
ActiveChart.SeriesCollection(2).Values = "='Sauvegarde_DCS'!$F" & var1 & ":$F" & var2

derniereligne:
Application.Worksheets("Stabilité_Pilote").Select
End Sub


Le but est de tracer le graphe "Taux_Captage_CO2" dans la feuille "Stabilité_Pilote" dont les données se trouvent dans la feuille "Sauvegarde_DCS", en fonction des dates renseignées dans la feuille "Stabilité_Pilote"

J'ai fait des boucle while Not pour faire varier mes axes, le soucis est que j'obtiens toujours l'erreur :
"erreur définie par l'application ou par l'objet" au niveau des boucles.

Please help! je suis à bout :(. Je ne sais plus comment écrire cette condition.

Merci beaucoup!
 

Izbeul

XLDnaute Nouveau
VB:
Sub Suivi_Tests()


Dim DateFinPer As Date
Dim DateDebutPer As Date
Dim rngDate1 As Range, rngDate2 As Range
Dim k As Long, n As Long, I As Long, R As Date, kmax As Long, Nmax As Long
Dim var1 As Long, var2 As Long, var3 As Long
Dim Essai As Date

Dim wf As WorksheetFunction
Set wf = Application.WorksheetFunction


Application.Worksheets("Stabilité_Pilote").Select
'DateFinPer = Sheets("Stabilité_Pilote").Range("H5")
DateFinPer = Worksheets("Stabilité_Pilote").Cells(5, 8).Value
DateDebutPer = Sheets("Stabilité_Pilote").Range("H4")

    If DateDebutPer > DateFinPer Then
        MsgBox "La date de début de période doit être antérieure à celle de fin de période"
        GoTo derniereligne

    End If

'Application.Worksheets("Sauvegarde_DCS").Select
Worksheets("Sauvegarde_DCS").Range("A:A").NumberFormat = "dd/mm/yy hh:mm;@"

With Worksheets("Sauvegarde_DCS").Range("A3:A40000")

   Set rngDate1 = Sheets("Sauvegarde_DCS").Range("A3:A40000").Find(DateDebutPer)
   Set rngDate2 = Sheets("Sauvegarde_DCS").Range("A3:A40000").Find(DateFinPer)
  
   If rngDate1 Is Nothing And rngDate2 Is Nothing Then
        MsgBox "Aucune donnée correspondante aux dates spécifiées n'a été extraite"
   Exit Sub

   Else:
  
        If rngDate1 Is Nothing Then
            MsgBox "Les données correspondantes à la date de début spécifiée n'ont pas été extraites"
        Exit Sub
  
   Else:
        If rngDate2 Is Nothing Then
            MsgBox "Les données correspondantes à la date de fin spécifiée n'ont pas été extraites"
        Exit Sub
        
   Else:
        
        End If
    End If
End If

End With

'Application.Worksheets("Sauvegarde_DCS").Select
I = Worksheets("Sauvegarde_DCS").Cells(Application.Rows.Count, "A").End(xlUp).Row

 k = 3
    While Not Worksheets("Sauvegarde_DCS").Cells(k, 1) = DateDebutPer
        k = k + 1
        
    Wend
    
    kmax = k


    If kmax > 30000 Then
        MsgBox " La date de début de période choisie n'est pas disponible dans les données extraites"
        GoTo derniereligne
    Else
    
    End If
 
 For n = 3 To I
   If Sheets("Sauvegarde_DCS").Cells(n, 1).Value = DateFinPer Then
      Nmax = n
      Else
      n = n + 1
    End If

Next n

    If Nmax > 30000 Then
        MsgBox " La date de fin de période choisie n'est pas disponible dans les données extraites"
    GoTo derniereligne
    Else
    
    End If

Application.Worksheets("Stabilité_Pilote").Select
 
    var1 = kmax
    var2 = Nmax
    var3 = var2 - var1 + 1
 
' SUIVI DES PARAMETRES DE PERFORMANCE DU PILOTE

    ' Taux de captage du CO2

Application.Worksheets("Stabilité_Pilote").Activate
    ActiveSheet.ChartObjects("Taux_Captage_CO2").Activate
    ActiveChart.Axes(xlCategory).Select
    ActiveSheet.ChartObjects("Taux_Captage_CO2").Activate
    ActiveChart.PlotArea.Select
    ActiveSheet.ChartObjects("Taux_Captage_CO2").Activate
    ActiveChart.Axes(xlCategory).Select
    ActiveSheet.ChartObjects("Taux_Captage_CO2").Activate
    ActiveChart.SeriesCollection(1).XValues = "=Sauvegarde_DCS!$A" & var1 & ":$A" & var2
    ActiveChart.SeriesCollection(1).Values = "='Sauvegarde_DCS'!$C" & var1 & ":$C" & var2
    'ActiveChart.SeriesCollection(2).XValues = "='Sauvegarde_DCS'!$A" & var1 & ":$A" & var2
    'ActiveChart.SeriesCollection(2).Values = "='Sauvegarde_DCS'!$F" & var1 & ":$F" & var2
    'ActiveChart.SeriesCollection(2).XValues = "=Sauvegarde_DCS!$A$3:$A$28"
    
derniereligne:
Application.Worksheets("Stabilité_Pilote").Select
End Sub
 

Izbeul

XLDnaute Nouveau
Bon, le code est plus lisible ainsi.

ce matin, la variable k réussie à sortir la date que je recherche. Seul "n" Me sort une erreur dans la fonction de type "1004".

J'ai donc changé de boucle et mis celle la:

Code:
For n = 3 To I
   If Sheets("Sauvegarde_DCS").Cells(n, 1).Value = DateFinPer Then
      Nmax = n
      Else
      n = n + 1
    End If

Next n

    If Nmax > 30000 Then
        MsgBox " La date de fin de période choisie n'est pas disponible dans les données extraites"
    GoTo derniereligne
    Else
    
    End If

Et toujours rien.

SOS please!
 

Statistiques des forums

Discussions
311 725
Messages
2 081 943
Membres
101 849
dernier inscrit
florentMIG