OVH Cloud OVH Cloud

Comment programmer un changement de format automatiquement

9 réponses
Avatar
George
Hello à tous,

Je voudrais savoir si une possibilité existe pour changer automatiquement
dans une feuille de calcul l'écriture d'une heure.

Je m'explique, un personne écrit avec le pavé numérique
3.30 (pour 3:30 heures). Mais le format sera incrit dans la cellule de cette
manière: 03.01.1900 07:12:00

Alors, voici ma demande. Comment écrire 3.30 et que cela reste un 3:30

Merci à celui qui saura m'aider.

Salutations

George

9 réponses

Avatar
AV
Pour la plage A1:A10 de la feuille
Dans le module de cette feuille :

Private Sub Worksheet_Change(ByVal zz As Range)
If zz.Count > 1 Then Exit Sub
If Intersect(zz, Range("A1:A10")) Is Nothing Then Exit Sub
If IsError(Application.Find(".", zz.Value)) Then 'saisie d'un entier => heure
Application.EnableEvents = False
zz = zz & ":"
Application.EnableEvents = True
End If
On Error Resume Next
Application.AutoCorrect.DeleteReplacement "."
End Sub

Private Sub Worksheet_SelectionChange(ByVal zz As Range)
If zz.Count > 1 Then Exit Sub
If Intersect(zz, Range("A1:A10")) Is Nothing Then
On Error Resume Next
Application.AutoCorrect.DeleteReplacement "."
Exit Sub
End If
Application.AutoCorrect.AddReplacement ".", ":"
End Sub

PS : la saisie d'un entier est considérée comme la saisie d'une heure
Cellules au format [hh]:mm

AV
Avatar
George
Cher Alain,



Étant assez novice, je vais essayer de résumer ma compréhension.



Dans le module de ma feuille de calcul auquel il faudra

rentrer les heures, les cellules sont de C9 à AG30.



Donc il faudra sélectionner non pas A1:A10 mais

C9:AG30



Est-ce exact?



Le module de la feuille ??? Dois-je ouvrir le script editor? Le visual
basic Editor??? Ou une nouvelle macro??



Encore une chose, si je comprends bien?

PS : la saisie d'un entier est considérée comme la saisie d'une heure




Lorsque j'écris 3.30 ceci sera interprété comme étant 3:30 ou bien ce 30
représente une subdivision de l'unité sur 100.???



(Désolé, mais ce sera la première fois que je rentrerais profondément dans
les méandres cachés d'une feuille Excel)



Merci de tes explications



George




"AV" a écrit dans le message de
news:
Pour la plage A1:A10 de la feuille
Dans le module de cette feuille :

Private Sub Worksheet_Change(ByVal zz As Range)
If zz.Count > 1 Then Exit Sub
If Intersect(zz, Range("A1:A10")) Is Nothing Then Exit Sub
If IsError(Application.Find(".", zz.Value)) Then 'saisie d'un entier =>
heure

Application.EnableEvents = False
zz = zz & ":"
Application.EnableEvents = True
End If
On Error Resume Next
Application.AutoCorrect.DeleteReplacement "."
End Sub

Private Sub Worksheet_SelectionChange(ByVal zz As Range)
If zz.Count > 1 Then Exit Sub
If Intersect(zz, Range("A1:A10")) Is Nothing Then
On Error Resume Next
Application.AutoCorrect.DeleteReplacement "."
Exit Sub
End If
Application.AutoCorrect.AddReplacement ".", ":"
End Sub

PS : la saisie d'un entier est considérée comme la saisie d'une heure
Cellules au format [hh]:mm

AV




Avatar
AV
Étant assez novice, je vais essayer de résumer ma compréhension.
Dans le module de ma feuille de calcul auquel il faudra
rentrer les heures, les cellules sont de C9 à AG30.
Donc il faudra sélectionner non pas A1:A10 mais
C9:AG30


Tout à fait --> donc dans le code, tu remplaces A1:A10 par C9:AG30

Le module de la feuille ??? Dois-je ouvrir le script editor? Le visual
basic Editor??? Ou une nouvelle macro??


Simplement clic droit sur le nom de l'onglet > Visualiser le code >
copier/coller le code fourni

Lorsque j'écris 3.30 ceci sera interprété comme étant 3:30
Absolument !

Par contre, si tu saisis simplement 30, ce sera considéré comme 30 heures

AV

Avatar
George
Tout à fait --> donc dans le code, tu remplaces A1:A10 par C9:AG30


Désolé de ne pas tout suivre. Mais le nom des cellules,
je les places ou?

En tête de code ? ou dans une des plages à gauche??

Encore merci pour ta précieuse aide?

George




"AV" a écrit dans le message de
news:%
Étant assez novice, je vais essayer de résumer ma compréhension.
Dans le module de ma feuille de calcul auquel il faudra
rentrer les heures, les cellules sont de C9 à AG30.
Donc il faudra sélectionner non pas A1:A10 mais
C9:AG30


Tout à fait --> donc dans le code, tu remplaces A1:A10 par C9:AG30

Le module de la feuille ??? Dois-je ouvrir le script editor? Le visual
basic Editor??? Ou une nouvelle macro??


Simplement clic droit sur le nom de l'onglet > Visualiser le code >
copier/coller le code fourni

Lorsque j'écris 3.30 ceci sera interprété comme étant 3:30
Absolument !

Par contre, si tu saisis simplement 30, ce sera considéré comme 30 heures

AV






Avatar
AV
la plage de cellules à sélectionner C9:AG30


Sélection du code fourni ci-dessous > Copier > Clic droit sur le nom de l'onglet
visualiser le code > Coller


Private Sub Worksheet_Change(ByVal zz As Range)
If zz.Count > 1 Then Exit Sub
If Intersect(zz, Range("C9:AG30")) Is Nothing Then Exit Sub
If IsError(Application.Find(".", zz.Value)) Then 'saisie d'un entier => heure
Application.EnableEvents = False
zz = zz & ":"
Application.EnableEvents = True
End If
On Error Resume Next
Application.AutoCorrect.DeleteReplacement "."
End Sub

Private Sub Worksheet_SelectionChange(ByVal zz As Range)
If zz.Count > 1 Then Exit Sub
If Intersect(zz, Range("C9:AG30")) Is Nothing Then
On Error Resume Next
Application.AutoCorrect.DeleteReplacement "."
Exit Sub
End If
Application.AutoCorrect.AddReplacement ".", ":"
End Sub

Pour tester, il ne te reste qu'à saisir dans une des cellules de la plage
C9:AG30 une valeur comme (c'est un exemple) 20.30

AV

Avatar
George
Alain,

Je ne sais si mon message à été publiée, mais je reformule ma question.

la plage de cellules à sélectionner C9:AG30

pourrais-tu me dire où je dois l'insérer exactement. Dans la même fenêtre
que la formule? où dans une des cases qui se trouve à gauche?

Merci encore pour ton aide.

George

"AV" a écrit dans le message de
news:%
Étant assez novice, je vais essayer de résumer ma compréhension.
Dans le module de ma feuille de calcul auquel il faudra
rentrer les heures, les cellules sont de C9 à AG30.
Donc il faudra sélectionner non pas A1:A10 mais
C9:AG30


Tout à fait --> donc dans le code, tu remplaces A1:A10 par C9:AG30

Le module de la feuille ??? Dois-je ouvrir le script editor? Le visual
basic Editor??? Ou une nouvelle macro??


Simplement clic droit sur le nom de l'onglet > Visualiser le code >
copier/coller le code fourni

Lorsque j'écris 3.30 ceci sera interprété comme étant 3:30
Absolument !

Par contre, si tu saisis simplement 30, ce sera considéré comme 30 heures

AV






Avatar
George
Alain,

Milles excuses sur mon ignorence, je n'avais pas vu les
Range("C9:AG30"))

Je te remercie infiniment. Cela fonctionne à merveille.

Si je ne m'abuse, ce code fonctionnerait aussi pour d'autres formes de
tableau et de calcul.

Alain, je m'incline bien bas pour te remercier.

salutations

George



"AV" a écrit dans le message de
news:
la plage de cellules à sélectionner C9:AG30


Sélection du code fourni ci-dessous > Copier > Clic droit sur le nom de
l'onglet

visualiser le code > Coller


Private Sub Worksheet_Change(ByVal zz As Range)
If zz.Count > 1 Then Exit Sub
If Intersect(zz, Range("C9:AG30")) Is Nothing Then Exit Sub
If IsError(Application.Find(".", zz.Value)) Then 'saisie d'un entier =>
heure

Application.EnableEvents = False
zz = zz & ":"
Application.EnableEvents = True
End If
On Error Resume Next
Application.AutoCorrect.DeleteReplacement "."
End Sub

Private Sub Worksheet_SelectionChange(ByVal zz As Range)
If zz.Count > 1 Then Exit Sub
If Intersect(zz, Range("C9:AG30")) Is Nothing Then
On Error Resume Next
Application.AutoCorrect.DeleteReplacement "."
Exit Sub
End If
Application.AutoCorrect.AddReplacement ".", ":"
End Sub

Pour tester, il ne te reste qu'à saisir dans une des cellules de la plage
C9:AG30 une valeur comme (c'est un exemple) 20.30

AV





Avatar
AV
Si je ne m'abuse, ce code fonctionnerait aussi pour d'autres formes de
tableau et de calcul.
** Sous réserve de modification, dans le code, de la plage de référence

(C9:AG30), oui

Alain, je m'incline bien bas pour te remercier.
** Fais gaffe aux lombalgies !


AV

Avatar
George
Tu m'as vraiment bien aidé.

Je t'en suis reconnaissant (Ainsi qu'aux autres aussi) sans ce forum, je ne
sais vraiment pas comment je me débrouillerais pour les trucs un peut plus
compliqués. (en plus, des fois, je comprends vite quand on me l'explique
lentement)



** Fais gaffe aux lombalgies !
J'ai déjà mal au dos. Depuis longtemps.

hihihihihi ::-)))))

salutations

George