OVH Cloud OVH Cloud

Validation suivant conditions

8 réponses
Avatar
Ouille
Salut a toutes et tou

J'ai un userform qui me sert a renrtrer des heures dans une feuilles avec un textbox et un boutons valider

Douzes feuilles (1 par mois

Une plage de cellule avec e

A -> Jours de la semain
B -> La date (01, 02, 03, a 28 ou 29 ou 31 ou 31 suivant le mois
C-> Les heures a rentre

Ce que j'aimerais, c'est qu'au moment de la validation dans ces feuilles que cela me test la plage de celulle C22 a C52 (C21 entete de colonne) pour connaitre la derniere données rentrée afin d'ajouter a la suite une donnée et que s'il y a des celulles avec la couleurs Grise que cela ecrive en dessous et que s'il y a la couleurs rose, que cela me demande si je veux valider cette données car c'est un jours sans garde), et quivant le mois que cela ne dépasse pas la plage a renseigner

Ex : Si Fevrier donc 29 jours la plage a renseigner s'arrète a Ligne 50 pour cette anné

Je ne sais pas si tout est bien explique, mais je vous remercie d'avance, Ouille

8 réponses

Avatar
Himselff
Un super bon petit truc pour trouver les couleurs dans tes cellules c'est
aller dans l'option outil et macro , ensuite enregistrer une macro et tu
fais les actions que tu as besoin de coder , ensuite tu ouvre ton VBA
(alt+f11) et tu as le code qui t'attend ,

Pour les conditions maintenant !

tu peux faire qque chose comme,

for x = 22 to 52
if couleur de la cellule = grise then
x = x + 1
cells(x,3) = ton heure
else
if couleur = rose then
msg=msgbox("Etes vous bien sure ...
?",vbokcancel,"Confirmation")

select case msg

case vbok
cells(x,3) = ton temps

end select

end if
end if
next


donc il va regarder tout les cellules de 22 a 52 et mettre tout les données
dans la cellule aproprié !

Bonne Chance et hésite pas si tu as dautre question !

Fred
"Ouille" wrote in message
news:
Salut a toutes et tous

J'ai un userform qui me sert a renrtrer des heures dans une feuilles avec
un textbox et un boutons valider.


Douzes feuilles (1 par mois)

Une plage de cellule avec en

A -> Jours de la semaine
B -> La date (01, 02, 03, a 28 ou 29 ou 31 ou 31 suivant le mois)
C-> Les heures a rentrer

Ce que j'aimerais, c'est qu'au moment de la validation dans ces feuilles
que cela me test la plage de celulle C22 a C52 (C21 entete de colonne) pour

connaitre la derniere données rentrée afin d'ajouter a la suite une donnée
et que s'il y a des celulles avec la couleurs Grise que cela ecrive en
dessous et que s'il y a la couleurs rose, que cela me demande si je veux
valider cette données car c'est un jours sans garde), et quivant le mois que
cela ne dépasse pas la plage a renseigner.

Ex : Si Fevrier donc 29 jours la plage a renseigner s'arrète a Ligne 50
pour cette année


Je ne sais pas si tout est bien explique, mais je vous remercie d'avance,
Ouille


Avatar
Ouille
Himself, le foru

Merci pour ton aide

Donc voila ce que j'ai mis par rapport a ce que tu m'as dit (Notemment pour les couleurs)

Private Sub cmdButValider_Click(

Dim x 'Pas de typ
Dim couleur ' Pas de typ
Dim msg 'Pas de typ

For x = 22 To 5
If couleur = 15 The
x = x +
Cells(x, 3) = TextBox
Els
If couleur = 24 The

msg = MsgBox("Nous sommes un Mardi, jours sans garde"

Print , vbOKCancel, "; "; Confirmation; ")

Select Case ms

Case vbO
Cells(x, 3) = TextBox

End Selec

End I
End I
Nex

End Su

A plusieur reprise on m'a demandé de déclarer les variable, ce que j'ai fait, mais comme je ne connais pas bien la declaration de variable, je n'ai pas ajouter le type (As variant, as byte, as Integrer .....

Tel que le code est ecrit cela me demande de declarer : Confirmatio

J'essaye de voir ce qui ne va pas, merci encore,Ouille
Avatar
Ouille
Re, Himself et le forum

Donc voila ce que j'ai fait

J'ai ajoute la selection de la feuille suivant le mois, (la liste des mois pour ce code est dans une feuille

Pour la condition ou c'était Rose, j'ai posé un question car j'avais deux choix en realite (Cas que je n'avait pas pense

J'ai rectifier a tors peut etre car je ne connaissait pas Print, case, msgcase ....,les messages

Et cela ne fonctionne pas, je n'ai ni des message, ni l'envoie des donnée

Heu la confirmation d'envoie(Seul message qui fonctionne,lol

Donc voici le code

Private Sub cmdButValider_Click(
Dim
Dim couleu
Dim ms
Dim nomfeuil As Strin

nomfeuil = Application.WorksheetFunction.
Index(Range("lesmois"), Month(Date)

With Sheets(nomfeuil
For x = 22 To 5
If couleur = 15 The
x = x +
Cells(x, 3) = TextBox
Els
If couleur = 24 The

msg = MsgBox("Nous sommes un mardi, jours sans garde !", vbCrLf, "Voulez-vous ajouter ces heures a ce jours ?", vbOKCancel, "Confirmation"
If msg = vbYes The
Cells(x, 3) = TextBox
Els
x = x +
Cells(x, 3) = TextBox
End I

End I
End I
Nex
End Wit
MsgBox "Données ajoutées
End Su

Merci, ouille
Avatar
Himselff
Il ne ten manquait pas beaucoup !

pour la couleur, Selection.Interior.ColorIndex = #couleur
selection c'est pour la cellule selectionné mais dans notre cas on peut
yaller avec cells(x,3).interior.colorindex = ton Numero de couleur

ensuite sa devrait fonctionner !

Bonne Chance !

Fred
"Ouille" wrote in message
news:

Re, Himself et le forum,

Donc voila ce que j'ai fait.

J'ai ajoute la selection de la feuille suivant le mois, (la liste des mois
pour ce code est dans une feuille)


Pour la condition ou c'était Rose, j'ai posé un question car j'avais deux
choix en realite (Cas que je n'avait pas pense)


J'ai rectifier a tors peut etre car je ne connaissait pas Print, case,
msgcase ....,les messages.



Et cela ne fonctionne pas, je n'ai ni des message, ni l'envoie des données

Heu la confirmation d'envoie(Seul message qui fonctionne,lol)

Donc voici le code:

Private Sub cmdButValider_Click()
Dim x
Dim couleur
Dim msg
Dim nomfeuil As String

nomfeuil = Application.WorksheetFunction. _
Index(Range("lesmois"), Month(Date))

With Sheets(nomfeuil)
For x = 22 To 52
If couleur = 15 Then
x = x + 1
Cells(x, 3) = TextBox1
Else
If couleur = 24 Then

msg = MsgBox("Nous sommes un mardi, jours sans garde !",
vbCrLf, "Voulez-vous ajouter ces heures a ce jours ?", vbOKCancel,

"Confirmation")
If msg = vbYes Then
Cells(x, 3) = TextBox1
Else
x = x + 1
Cells(x, 3) = TextBox1
End If

End If
End If
Next
End With
MsgBox "Données ajoutées"
End Sub

Merci, ouille


Avatar
Himselff
hehe je pense que je vien de voir l'erreur =)

si tu mets, txtbox1.text au lieu de txtbox1 tout court sa devrait passer !

Fred
"Ouille" wrote in message
news:
HimSelf, le forum

Merci de te pencher sur ce code.

J'ai bien tenté ta modificxation, mais meme resultat, j'ai juste le
dernier message : Données ajoutées


Voici le code complet de mon UserForm

Option Explicit

Dim TheNum As Byte
Dim TheDate As Date


Private Sub cmdButValider_Click()
Dim x
Dim msg

Dim TheNum As Byte

TheNum = CByte(Month(Date))

With Sheets(TheNum)
For x = 22 To 52
If Cells(x, 3).Interior.ColorIndex = 15 Then
x = x + 1
Cells(x, 3) = TextBox1

ElseIf Cells(x, 3).Interior.ColorIndex = 24 Then

msg = MsgBox("Nous sommes un mardi, jours sans garde !",
vbCrLf, "Voulez-vous ajouter ces heures a ce jours ?", vbOKCancel,

"Confirmation")
If msg = vbYes Then
Cells(x, 3) = TextBox1
Else
x = x + 1
Cells(x, 3) = TextBox1
End If

End If

Next
End With

MsgBox "Données ajoutées"

End Sub


Private Sub UserForm_Initialize()

Dim TheNum As Byte

TheNum = CByte(Month(Date))

USF_SaisieHeures.Caption = "Saisie des heures en " &
Worksheets(TheNum).Name



End Sub

Je ne sais pas pourquoi rien ne s'ajoute dans la feuille, merci Ouille


Avatar
Ouille
Himself, le foru

Merci, j'ai essayé, et cela ne change rien, je ne sais meme pas si cela me le met quelque part

C'est quand meme bizard

Merci, Ouille
Avatar
Himselff
A tu essayer de passer ta macro au pas a pas ?, regarde bien les variables
et les conditions pour voir si la macro passe bien ou elle ce doit , a
partir de la on va pouvoir se reajuster !

=)

Fred
"Ouille" wrote in message
news:
Himself, le forum

Merci, j'ai essayé, et cela ne change rien, je ne sais meme pas si cela me
le met quelque part.


C'est quand meme bizard.

Merci, Ouille


Avatar
Himselff
ok je crois que je vois le bobo, si on change la condition de boucle au lieu
de faire un for..next on fait un do..while dans le genre de :

Option Explicit

Private Sub cmdButValider_Click()

Dim x
Dim msg

With Sheets("Feuil1")

do while x < 53

If Cells(x, 3).Interior.ColorIndex = 15 Then
x = x + 1
Cells(x, 3) = USF_SaisieHeures.TextBox1.Text

ElseIf Cells(x, 3).Interior.ColorIndex = 24 Then

msg = MsgBox("Nous sommes Mardi, jours sans garde !" & vbCrLf & "Voulez-vous
ajouter ces heures a ce jours ?", vbYesNo, "Confirmation")

If msg = vbYes Then
Cells(x, 3) = USF_SaisieHeures.TextBox1.Text
x = x + 1
Else
x = x + 1
Cells(x, 3) = USF_SaisieHeures.TextBox1.Text
End If
End If

loop

End With
MsgBox "Données ajoutées"
End Sub

essaie sa et redonnne moi des nouvelles =)

Fred
"Ouille" wrote in message
news:
Himself

Bon voila ou j'en suis, j'ai fait le code avec une feuille définie (C'est
plus simpe a gérer), le voici :


Option Explicit

Private Sub cmdButValider_Click()

Dim x
Dim msg

With Sheets("Feuil1")
For x = 22 To 52

If Cells(x, 3).Interior.ColorIndex = 15 Then
x = x + 1
Cells(x, 3) = USF_SaisieHeures.TextBox1.Text

ElseIf Cells(x, 3).Interior.ColorIndex = 24 Then

msg = MsgBox("Nous sommes Mardi, jours sans garde !" & vbCrLf &
"Voulez-vous ajouter ces heures a ce jours ?", vbYesNo, "Confirmation")


If msg = vbYes Then
Cells(x, 3) = USF_SaisieHeures.TextBox1.Text
Else
x = x + 1
Cells(x, 3) = USF_SaisieHeures.TextBox1.Text
End If
End If

Next
End With
MsgBox "Données ajoutées"
End Sub

Il y aavait une errueur ici :

msg = MsgBox("Nous sommes Mardi, jours sans garde !" & vbCrLf &
"Voulez-vous ajouter ces heures a ce jours ?", vbYesNo, "Confirmation")


J'avais mis des virgule a la place de & pour vbCrlf

En résumé :

Lorsque l'on envoie les donnée, s'il rencontre deux celulles grises, cela
l'inscrit pas dans la premiere, mais dans la deuxieme oui

Si il y a des celulles grises et rose, idem mais en plus cela le met dans
la premere celule rencontrée et si elle est ross cela l'inscrit quand meme,

et cela me pose la question et cela rempli le célulle assez bizarement.

Merci, Ouille