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!
 

Discussions similaires

Statistiques des forums

Discussions
315 098
Messages
2 116 191
Membres
112 679
dernier inscrit
Yupanki