Boucle while

Résolu
Ayuritenshi Messages postés 299 Statut Membre -  
Ayuritenshi Messages postés 299 Statut Membre -
Bonjour
Etant nulle en langage VBA j'aimerais savoir si quelqu'un pourrait m'aider pour faire une boucle while afin d'incrémenter une cellules ou plusieurs cellules de 5 en 5. Je vus explique j'ai une base de données qui répertorie environ 1000 lignes et 14 colonnes dont deux colonnes qui correspondent a la température min et max j'ai mis une macro qui fait comme un filtre avancer et qui recherche des résultats en fonction de ce qu'on tape dans les cellules.
J'aimerais pouvoir lancer une incrémentation si la recherche était faite pour la température et que la base de donnée n'a pas trouver de résultats.mais j'aimerais également que l'utilisateur puisse choisir d'incrémenter soit la Tmini, soit la Tmax, soit les deux.
Voici mon fichier : http://www.cjoint.com/c/EFcoYZo0jMM
J'espère que l'un ou l'une de vous pourra m'aider.
Cordialement

1 réponse

  1. Utilisateur anonyme
     
    Bonjour

    Tu nous as signalé que ton problème était résolu.

    La règle sur le forum est que tu viennes nous expliquer la solution.

    Merci d'avance,
    Strumpfette, modératrice.
    0
    1. Ayuritenshi Messages postés 299 Statut Membre 53
       
      bonjour,
      la solution c'est que quelqu'un m'a aider mais on est pas du tous passer pas une boucle while donc je pense que ce serais hors sujet ... voulez vous quand même que je l'explique ?
      0
      1. Utilisateur anonyme > Ayuritenshi Messages postés 299 Statut Membre
         
        Ce serait bien oui... ;)
        0
    2. Ayuritenshi Messages postés 299 Statut Membre 53
       
      très bien ^^
      Alors j'ai été aidé par pijaku et brunoM45 du forum Excel-pratique
      Ils ont fait un travail remarquable,et de beaucoup de patience avec moi :/
      Alors voilà ils ont modifié mon code afin que la température de ma base de données puissent s'incrémenter seule s'il n'y a pas de résultats obtenue dans la base de donnée.
      s'il n'y a pas de résultats obtenue dans la base de donnée une macro propose a l'utilisateur d'incrémenter la température il aura alors le choix d'incrémenté la tmin tmax ou les deux puis il valide .
      la température a donc la possibilité de s'incrémenter jusqu'à 100 fois de 5 en 5 tant qu'il n'y a pas de résultat. s'il y a un résultat l'incrémentation s'arrête et vous avez donc le résultats de la base de données.
      Le code est le suivant :
      Module 1.

      Public Flag As Boolean
      Public Premiere As Boolean
      Public Quitter As Boolean
      Public Incrémentation_de_Tmin As String
      Public Incrémentation_de_Tmax As String
      Public Incrémentation_des_deux As String


      UserForm :
      Private Sub CommandButton1_Click() 'Fermeture de la boite de dialogue apres un click sur "Valider"
      Dim Cpt As Byte
      Incrémentation_de_Tmin = IIf(OptionButton1.Value = True, "OK", "NON")
      Incrémentation_de_Tmax = IIf(OptionButton2.Value = True, "OK", "NON")
      Incrémentation_des_deux = IIf(OptionButton3.Value = True, "OK", "NON")
      If MsgBox("confirmez-vous incrementation?", vbYesNo, "confirmation") = vbYes Then
      Unload Me
      For Cpt = 1 To 100
      If Quitter Then Quitter = False: Exit For
      If Incrémentation_de_Tmin = "OK" Then Range("F4").Value = Range("F4").Value - 5
      If Incrémentation_de_Tmax = "OK" Then Range("I4").Value = Range("I4").Value + 5
      If Incrémentation_des_deux = "OK" Then
      Flag = True
      Sheets("Feuil1").Range("F4:I4").Copy Sheets("Feuil2").Range("F1:I1")
      Sheets("Feuil2").Range("F1") = Sheets("Feuil2").Range("F1") - 5
      Sheets("Feuil2").Range("I1") = Sheets("Feuil2").Range("I1") + 5
      Sheets("Feuil2").Range("F1:I1").Copy Sheets("Feuil1").Range("F4")
      End If
      Next Cpt
      End If
      End Sub

      Private Sub CommandButton2_Click() ' Si l'on clique sur "Quittez" les valeurs des variables sont réinitialisées
      Unload UserForm2
      End Sub

      Private Sub UserForm_Initialize()
      OptionButton1.Value = False
      OptionButton2.Value = False
      OptionButton3.Value = False
      Quitter = False
      Premiere = True
      End Sub


      et code de la feuille de recherche :
      Option Explicit

      Private Sub CommandButton1_Click()
      UserForm1.Show
      End Sub

      Private Sub CommandButton3_Click()
      UserForm2.Show
      End Sub

      Private Sub Worksheet_Change(ByVal Target As Range)
      Dim Cel As Range
      If Flag = False Then
      If Target.Count > 1 Then Exit Sub
      End If
      Flag = False
      If Not Application.Intersect(Target, Range("A4:O4")) Is Nothing Then
      Application.ScreenUpdating = False
      Application.EnableEvents = False
      For Each Cel In Range("A4:O4")
      If Cel <> "" Then
      If Not IsNumeric(Cel) Then
      Cel.Offset(-1) = "*" & Cel.Value & "*"
      Else
      Cel.Offset(-1) = Cel.Value
      End If
      Else
      Cel.Offset(-1).ClearContents
      End If
      Next Cel
      Application.EnableEvents = True
      Range("A6:P1000").AdvancedFilter Action:=xlFilterInPlace, _
      CriteriaRange:=Range("A2:O3"), Unique:=False
      End If
      Dim LgFin As Long
      LgFin = Range("A" & Rows.Count).End(xlUp).Row
      If Evaluate("SUBTOTAL(3,A7:A" & LgFin & ")") = 0 And Premiere = False Then
      UserForm2.Show
      ElseIf Evaluate("SUBTOTAL(3,A7:A" & LgFin & ")") = 0 And Premiere = True Then
      ElseIf Evaluate("SUBTOTAL(3,A7:A" & LgFin & ")") > 0 Then
      Quitter = True: Premiere = False
      End If
      End Sub


      Voilà j'espère que vous comprendrez quelque chose et n'hésitez pas à aller remercier le travail des deux personnes du forum d'Excel pratique :)

      Bonne journée
      0
      1. Utilisateur anonyme > Ayuritenshi Messages postés 299 Statut Membre
         
        Merci pour le retour ;)
        Bonne continuation :)
        0
    3. Ayuritenshi Messages postés 299 Statut Membre 53
       
      de rien vous de même :)
      0