Bonsoir à tous, je cherche une macro qui, associée à un bouton, puisse augmenter ou diminuer la valeur des 2 premiers chiffres d'un nombre ou d'une date.
Par exemple 2116 deviendrai 2016 ou 2216 et 12/01/16 deviendrai 11/01/16 ou 13/01/16.
J'ai cherché sur les forums mais je n'ai rien trouvé.
J'ai mis en pièce jointe un fichier.
Re : Macro pour modifier les 2 premiers chiffres d'un nombre ou d'une date
Bonjour.
Oui mais si c'est une date, ça doit bien rester une date à l'arrivée, non ?
Sinon qu'est-ce que ça doit devenir si on ajoute 1 au dernier jour du mois, un texte ?
Re : Macro pour modifier les 2 premiers chiffres d'un nombre ou d'une date
Bonjour Dranreb, tout ce que je souhaite c'est que ça ne modifie uniquement les 2 premiers chiffres qu'il y a dans une cellule. Peu importe ce que cela deviendra par la suite si on augmente ou diminue ces 2 premiers chiffres.
Il faudrait que la macro ne prenne en compte que les 2 premiers chiffres qu'il y a dans une cellule et les augmente ou diminue de 1 à chaque fois que l'on clique sur les boutons.
J'espère que je suis plus clair.
Re : Macro pour modifier les 2 premiers chiffres d'un nombre ou d'une date
Il n'y a aucun chiffre nulle part dans vos cellules, car ce ne sont pas des textes.
La première cellule contient une valeur numérique binaire en double précision qui est artificiellement figurée sous forme de chiffres,
et la deuxième une date, qui n'est pas non plus composées de chiffres puisque c'est aussi une valeur binaire représentant le nombre de jours depuis le 1er janvier 1900.
Il faut vraiment que vous cessiez immédiatement de confondre ce que vous voyez dans une cellule avec ce qu'elle contient, sinon vous ne comprendrez jamais rien à rien !
Notez que vous n'êtes de loin pas le seul à faire cette confusion, mais j'espère vous avoir rendu le service de ne plus en être.
À part ça, en attenant j'en suis là pour ajouter 1 sans changer le type de donnée :
VB:
Dim V As Variant ' supposé contenir une valeur de cellule
…
Select Case VarType(V)
Case vbDate: V = V + 1
Case vbDouble: V = V + Val("0.1" & Right$(Format(V, "0.0E+00"), 4))
Case vbString: V = Format(Left$(V, 2) + 1, "00") & Mid$(V, 3)
End Select
Re : Macro pour modifier les 2 premiers chiffres d'un nombre ou d'une date
Bonjour Chris401 et merci pour votre réponse. C'est super si c'est une date mais pas pour si c'est 4 chiffres. En fait je ne voulais pas trop en demander en ne voulant changer que les 2 premiers chiffres mais je m'aperçois que cela ne paraît pas clair.
En fait, dans mon fichier il y a une cellule où je doit mettre soit une date soit un numéro de semaine associé à l'année, par ex : 11/01/16 ou 0216 (numéro de semaine + année écrit comme cela).
Pour la date, pas de problème avec votre macro, mais cela ne fonctionne pas pour les numéros de semaines + année.
Par ex si j'inscris 0116 et que je clique sur le bouton pour diminuer d'une valeur de 1 il faudrait que dans la cellule s'affiche 5315 et dans l'autre sens 0216 (et ainsi de suite, si c'est possible bien entendu).
Pour ce qui est de la façon de poser les questions je fais comme beaucoup d'autres : comme je peux, je ne suis ni informaticien ni mathématicien... mais en tout cas je remercie beaucoup ceux qui m'aide.
Bonne journée à tous