Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

select case

14 réponses
Avatar
J
Bonjour à tous
En g13:d50 je saisis un nombre de 2 chiffres. Si ce chiffre est >70, la
macro y ajoute 1900, sinon elle ajoute 2000.

Voici mon code initial
****
If Not Intersect(Target, [D13:D50]) Is Nothing Then
Select Case Target.Value
Case Is = ""
Target.Value = ""
Case Is > 70
Target.Value = Target.Value + "1900"
Case Else
Target.Value = Target.Value + "2000"
End Select
End If
****
Et là il y a qqchose de bizarre :
Si je tape par erreur 1995, la validation de saisie me refuse cela,
*mais si* alors je resaisis 95, le résultat est "5795" au lieu de 1995.
Que se passe-t-il?

*J'ai modifié le code* comme suit, mais comment si la saisie est sup à
99 simplement demander de resaisir et non seulement me vider la saisie?
****
Select Case Target.Value
Case Is = ""
Target.Value = ""
Case Is < 70
Target.Value = Target.Value + "2000"
Case 70 To 99
Target.Value = Target.Value + "1900"
Case Is > 99
Target.Value = "" 'ligne à modifier
End Select
****

Merci pour l'aide.
Cordialement
J@@

4 réponses

1 2
Avatar
Jacky
Re...
Mais mon problème me donnait 5795 :
saisie erronée 1995
contrôle de validation bloque, demande ressaisie,
OK, nouvelle saisie 95 => résultat 5795.



Là c'est le "Ressaisie" le fautif ;o)
J'ai pas vu la boucle, mais certainement...ou manque de
"Application.EnableEvents = False"
1tour 1995+1900895
2ème tour target895 et.......
3895+1900W95
CQFD :o)

Pourquoi 1900 plutôt que "1900" ?


Dans ce cas les deux fonctionnent (xl transforme), mais pourquoi prendre du
texte("1900") et ajouter un chiffre(95 pour 1995)

HS............................
A un moment j'ai lu
Mais il faudra que je modifie cela en 2070. Si Excel et moi sommes encore
à la plage...


Plage pour page.....
Je me suis dit....ah! le veinard
;o))))
..............................
--
Salutations
JJ


"J@@" a écrit dans le message de news:

Bonjour Jacky
> Ps: Méfies toi des dates dont l'année est calculée sur 2 chiffres,
sinon tu
> ré-inventes le bug de l'an 2000.

:-))
pour une fois que j'aurai inventé quelque chose ;-)

En fait il s'agit d'un format imposé :

Saisie périodes :
Début - Fin // Calcul auto durée
J M A J M A // A M J
09 03 2007 31 03 2007 // 0 0 23

Les utilisateurs saisissant souvent les années bizarrement, j'ai mis cette
pro événementielle pour que la saisie se fasse en 2 chiffres.
Mais il faudra que je modifie cela en 2070. Si Excel et moi sommes encore
à la page...

Mais mon problème me donnait 5795 :
saisie erronée 1995
contrôle de validation bloque, demande ressaisie,
OK, nouvelle saisie 95 => résultat 5795.

je pense que l'aller-retour par le contrôle de validation doit me
chambouler le bastringue, mais comment?

Un petit point :

Pourquoi 1900 plutôt que "1900" ?

@+
J@@




Avatar
Modeste
Bonsour® J@@ avec ferveur ;o))) vous nous disiez :

Là on devient puriste
Pour le plaisir.
On peut même se permettre de franciser Target :-)
Private Sub Worksheet_Change(ByVal Cible As Range)
If Cible.Address = "$A$1" Then Cible.Offset(0, 1) = Right(Cible, 2)
End Sub





Mais que veut dire au juste Right(Target,2) ?











;o)))
il faut que ce soit un Canadien qui nous rappelle que l'on est sur un news francophone !!! ;o)))

;o))) pourquoi pas ?
Private Sub Worksheet_Change(ByVal Crisse As Range)
If Crisse.Address = "$A$1" Then Crisse.Offset(0, 1) = Right(Crisse, 2)
End Sub

ou encore
Private Sub Worksheet_Change(ByVal Fare As Range)
If Fare.Address = "$A$1" Then Fare.Offset(0, 1) = Right(Fare, 2)
End Sub

Aué Mai taï api
;o)))
Avatar
garnote
Ia ora na te taeae,

;o)))
il faut que ce soit un Canadien qui nous rappelle que l'on est sur un news
francophone !!! ;o)))


il faut que ce soit un Québécois qui nous rappelle que l'on est sur un
groupe de discussion francophone !!! ;o)))

;o))) pourquoi pas ?
Private Sub Worksheet_Change(ByVal Crisse As Range)
If Crisse.Address = "$A$1" Then Crisse.Offset(0, 1) = Right(Crisse, 2)
End Sub


ou bien
Private Sub Worksheet_Change(ByVal ise As Range)
If ise.Address = "$A$1" Then ise.Offset(0, 1) = Right(ise, 2)
End Sub

ou encore
Private Sub Worksheet_Change(ByVal Fare As Range)
If Fare.Address = "$A$1" Then Fare.Offset(0, 1) = Right(Fare, 2)
End Sub


ou bien
Private Sub Worksheet_Change(ByVal Fiu As Range)
If Fiu.Address = "$A$1" Then Fiu.Offset(0, 1) = Right(Fiu, 2)
End Sub

Ia maitai oe iteie mahana
;o)))
Avatar
J
Ia ora na 'orua
Même toi Serge tu te mets au tahitien :-)
Chti et Québecois, même combat !
Aue te aue
Te aroha ia rahi
J@@

garnote a écrit :
Ia ora na te taeae,

;o)))
il faut que ce soit un Canadien qui nous rappelle que l'on est sur un news
francophone !!! ;o)))


il faut que ce soit un Québécois qui nous rappelle que l'on est sur un
groupe de discussion francophone !!! ;o)))

;o))) pourquoi pas ?
Private Sub Worksheet_Change(ByVal Crisse As Range)
If Crisse.Address = "$A$1" Then Crisse.Offset(0, 1) = Right(Crisse, 2)
End Sub


ou bien
Private Sub Worksheet_Change(ByVal ise As Range)
If ise.Address = "$A$1" Then ise.Offset(0, 1) = Right(ise, 2)
End Sub

ou encore
Private Sub Worksheet_Change(ByVal Fare As Range)
If Fare.Address = "$A$1" Then Fare.Offset(0, 1) = Right(Fare, 2)
End Sub


ou bien
Private Sub Worksheet_Change(ByVal Fiu As Range)
If Fiu.Address = "$A$1" Then Fiu.Offset(0, 1) = Right(Fiu, 2)
End Sub

Ia maitai oe iteie mahana
;o)))





1 2