Boucle while

Résolu/Fermé
Ayuritenshi Messages postés 281 Date d'inscription vendredi 15 mai 2015 Statut Membre Dernière intervention 5 mai 2016 - 2 juin 2015 à 16:52
Ayuritenshi Messages postés 281 Date d'inscription vendredi 15 mai 2015 Statut Membre Dernière intervention 5 mai 2016 - 4 juin 2015 à 09:20
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

Utilisateur anonyme
4 juin 2015 à 08:51
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
Ayuritenshi Messages postés 281 Date d'inscription vendredi 15 mai 2015 Statut Membre Dernière intervention 5 mai 2016 53
Modifié par Ayuritenshi le 4/06/2015 à 08:55
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
Utilisateur anonyme > Ayuritenshi Messages postés 281 Date d'inscription vendredi 15 mai 2015 Statut Membre Dernière intervention 5 mai 2016
4 juin 2015 à 09:01
Ce serait bien oui... ;)
0
Ayuritenshi Messages postés 281 Date d'inscription vendredi 15 mai 2015 Statut Membre Dernière intervention 5 mai 2016 53
4 juin 2015 à 09:14
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
Utilisateur anonyme > Ayuritenshi Messages postés 281 Date d'inscription vendredi 15 mai 2015 Statut Membre Dernière intervention 5 mai 2016
4 juin 2015 à 09:17
Merci pour le retour ;)
Bonne continuation :)
0
Ayuritenshi Messages postés 281 Date d'inscription vendredi 15 mai 2015 Statut Membre Dernière intervention 5 mai 2016 53
4 juin 2015 à 09:20
de rien vous de même :)
0