OVH Cloud OVH Cloud

Formule délicate + équivalence en VBA...

14 réponses
Avatar
Domi
Bonsoir,

J'ai dans une colonne (plage nommée "NumDos") des valeurs au format texte.
Ce sont des codes qui se présentent tous de la même façon :
"Paa/xxxx"
P est une constante
aa est une année sur 2 chiffres (98, 99, 01, 02..etc)
/ est une constante (slash)
xxxx est un numéro (compris entre 0001 et 9999)

Je voudrais
1°) par une formule, connaitre dans une cellule : Le plus grand numéro
(xxxx) pour l'année en cours (aujourd'hui).

2°) Quel code VBA utiliser pour obtenir la même info dans un texbox à
l'initialisation d'un userform.
(en évitant de passer par la copie du calcul dans une cellule) ?

Exemple : avec ces valeurs : nous sommes en 2006, donc cela me renvoie
"0004"
P05/0025
P06/0001
P06/0002
P06/0003
P06/0004


Merci
Domi

4 réponses

1 2
Avatar
Domi
Pour les 4 caractères j'avais vu et corrigé...
Pour la concision, je parlais du code... désolé de ne pas avoir précisé et
ainsi pris le risque de provoquer un grave incident diplomatique ;o)))))))

Domi

"michdenis" a écrit dans le message de
news:
Bonjour Domi,

| C'est plus concis.

Je m'insurge ... ;-))

Ma formule fait 6 caractères de moins de celle de AV

=MAX(SI(ANNEE("01/01/"&(STXT(A3:A10;2;2)))*1=ANNEE(AUJOURDHUI());STXT(A3:A10

;5;5)*1))

Et celle de AV retourne seulement le 4 ième digit des xxxx au lieu des 4
digits demandés...

Il a omis un argument à droite(....) mais c'est selon moi ! ;-)

Ou je n'ai rien compris à ce que tu désirais !
Et ça c'est bien possible !!!

;-)))


Salutations!


"Domi" a écrit dans le message de news:


C'est plus concis.
Merci ;o)
Domi

"AV" a écrit dans le message de
news:
| Exemple : avec ces valeurs : nous sommes en 2006, donc cela me
renvoie



| "0004"


Avec la plage nommée "NumDos"

1°) Sur la feuille de calcul

Validation matricielle (Ctrl+ Maj + entrée)



=TEXTE(MAX(SI(STXT(NumDos;2;2)=DROITE(ANNEE(AUJOURDHUI());2);DROITE(NumDos)*

1));"0000")

2°) TextBox sur UF

Private Sub UserForm_Initialize()
Me.TextBox1 > >


[text(max(if(mid(numdos,2,2)=right(year(today()),2),right(numdos)*1)),"0000"

)]
End Sub

AV










Avatar
michdenis
Moi ce que j'ai saisi de la demande, la formule devrait
retourner la valeur maximale représenté par les xxxx
pour l'année en cours "06" dans une chaîne comme
celle-ci P06/xxxx

Si la liste est constituée de :
P06/2532
P06/2508

la formule devrait retourner : 2508

comme il y a toujours 4 xxxx dans la saisie que
propose Domi (selon lui),
je ne comprends pas pourquoi je devrais ajouter la fonction texte !
à ma formule à moins que je n'ai pas compris la demande !

;-)

Salutations!



"AV" a écrit dans le message de news:
Je m'insurge ... ;-))
Ma formule fait 6 caractères de moins de celle de AV



Bof, bof
Exact que le 2° argument de la 2° fonction DROITE est resté dans le
presse-papier (surement que bcp avaient corrigé), mais même en le rajoutant

=TEXTE(MAX(SI(STXT(NumDos;2;2)=DROITE(ANNEE(AUJOURDHUI());2);DROITE(NumDos;4)*1));"0000")
ma formule restera, me semble-t-il, plus courte car :
Extrait de la demande :
"...avec ces valeurs : nous sommes en 2006, donc cela me renvoie "0004"."
Ta formule (la 2°) renvoie "4" . il va bien falloir que tu rajoutes la
fonction TEXTE pour respecter la demande...
Ca fera alors combien de caractères ? Hum..

AV


Avatar
AV
| je ne comprends pas pourquoi je devrais ajouter la fonction texte !

Pffff....et si tu lisais bien la question ET l'exemple fourni ET le résultat
attendu ?

* Début de la question initiale :
Exemple : avec ces valeurs : nous sommes en 2006, donc cela me renvoie
"0004"
P05/0025
P06/0001
P06/0002
P06/0003
P06/0004
* Fin question initiale

Avec ces données, que renvoie ta formule ? --> "4" et non "0004" !
Repfffff...
;-)

AV
Avatar
michdenis
Bon ça y est j'ai compris ! ;-))

Mais la demande initiale de DOMI :
1°) par une formule, connaitre dans une cellule : Le plus grand numéro
(xxxx) pour l'année en cours (aujourd'hui).

IL parle du plus grand numéro et non pas du format de celui-ci !

Ça y est, je m'inscris à un cours de base en lecture...
"comment arriver à décoder le non-écrit ?"

;-))


Salutations!





"AV" a écrit dans le message de news:
| je ne comprends pas pourquoi je devrais ajouter la fonction texte !

Pffff....et si tu lisais bien la question ET l'exemple fourni ET le résultat
attendu ?

* Début de la question initiale :
Exemple : avec ces valeurs : nous sommes en 2006, donc cela me renvoie
"0004"
P05/0025
P06/0001
P06/0002
P06/0003
P06/0004
* Fin question initiale

Avec ces données, que renvoie ta formule ? --> "4" et non "0004" !
Repfffff...
;-)

AV
1 2