OVH Cloud OVH Cloud

conversion automatique de la saisie

7 réponses
Avatar
Beronf
Bonjour,

Est-il possible de convertir automatiquement la saisie dans une cellule sans
qu'il s'agisse d'une référence circulaire? Par exemple je tape 2,5 (km) en A1
et excel écrit automatiquement 2500 (m) à la place (donc en A1!).

Je ne sais vraiment pas comment m'y prendre, et encore moins si c'est
réellement possible...

Merci pour votre aide.

Pierre

7 réponses

Avatar
Daniel
Bonsoir.
Recopie la macro suivante dans le code de la feuille (clic droit sur
l'onglet, visualiser le code) :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address <> "$A$1" Then Exit Sub
Target.Value = Target.Value * 1000
End Sub

Note : cette macro est uniquement valable pour A1. Si tu veux modifier la
plage ou cette opération est possible, dis-le.
Cordialement.
Daniel
"Beronf" a écrit dans le message de news:

Bonjour,

Est-il possible de convertir automatiquement la saisie dans une cellule
sans
qu'il s'agisse d'une référence circulaire? Par exemple je tape 2,5 (km) en
A1
et excel écrit automatiquement 2500 (m) à la place (donc en A1!).

Je ne sais vraiment pas comment m'y prendre, et encore moins si c'est
réellement possible...

Merci pour votre aide.

Pierre


Avatar
michdenis
Bonjour Beronf,

copie ceci dans la feuille module où l'action se déroule :

La plage visée par la macro est la colonne A:A ... à toi d'adapter

'--------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

Dim Rg As Range
Set Rg = Intersect(Target, Range("A:A"))
If Not Rg Is Nothing Then
Application.EnableEvents = False
For Each c In Rg
If IsNumeric(c) Then
c.Value = c * 1000
c.NumberFormat = "# ""(m)"""
End If
Next
Application.EnableEvents = True
End If

End Sub
'--------------------------


Salutations!



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

Est-il possible de convertir automatiquement la saisie dans une cellule sans
qu'il s'agisse d'une référence circulaire? Par exemple je tape 2,5 (km) en A1
et excel écrit automatiquement 2500 (m) à la place (donc en A1!).

Je ne sais vraiment pas comment m'y prendre, et encore moins si c'est
réellement possible...

Merci pour votre aide.

Pierre
Avatar
Beronf
Bonsoir,

Merci pour ton intervention qui va bien m'aider.
En effet je voudrai pouvoir utiliser cette procedure dans toutes les
cellules d'une plage de cellules. Comment la modifier?

Pierre


Bonsoir.
Recopie la macro suivante dans le code de la feuille (clic droit sur
l'onglet, visualiser le code) :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address <> "$A$1" Then Exit Sub
Target.Value = Target.Value * 1000
End Sub

Note : cette macro est uniquement valable pour A1. Si tu veux modifier la
plage ou cette opération est possible, dis-le.
Cordialement.
Daniel
"Beronf" a écrit dans le message de news:

Bonjour,

Est-il possible de convertir automatiquement la saisie dans une cellule
sans
qu'il s'agisse d'une référence circulaire? Par exemple je tape 2,5 (km) en
A1
et excel écrit automatiquement 2500 (m) à la place (donc en A1!).

Je ne sais vraiment pas comment m'y prendre, et encore moins si c'est
réellement possible...

Merci pour votre aide.

Pierre







Avatar
Beronf
Bonsoir,

Merci pour ton aide. Ta methode me semble plus complexe que celle de Daniel.
Quel est son avantage (je débute et je ne comprends pas encore tout...).

Pierre


Bonjour Beronf,

copie ceci dans la feuille module où l'action se déroule :

La plage visée par la macro est la colonne A:A ... à toi d'adapter

'--------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

Dim Rg As Range
Set Rg = Intersect(Target, Range("A:A"))
If Not Rg Is Nothing Then
Application.EnableEvents = False
For Each c In Rg
If IsNumeric(c) Then
c.Value = c * 1000
c.NumberFormat = "# ""(m)"""
End If
Next
Application.EnableEvents = True
End If

End Sub
'--------------------------


Salutations!



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

Est-il possible de convertir automatiquement la saisie dans une cellule sans
qu'il s'agisse d'une référence circulaire? Par exemple je tape 2,5 (km) en A1
et excel écrit automatiquement 2500 (m) à la place (donc en A1!).

Je ne sais vraiment pas comment m'y prendre, et encore moins si c'est
réellement possible...

Merci pour votre aide.

Pierre





Avatar
Daniel
Remplace la ligne :
If Target.Address <> "$A$1" Then Exit Sub
par
if intersect(target, range("A1:B10")) is nothing then exit sub
remplace A1:B10 par la plage de ton choix.
Daniel
"Beronf" a écrit dans le message de news:

Bonsoir,

Merci pour ton intervention qui va bien m'aider.
En effet je voudrai pouvoir utiliser cette procedure dans toutes les
cellules d'une plage de cellules. Comment la modifier?

Pierre


Bonsoir.
Recopie la macro suivante dans le code de la feuille (clic droit sur
l'onglet, visualiser le code) :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address <> "$A$1" Then Exit Sub
Target.Value = Target.Value * 1000
End Sub

Note : cette macro est uniquement valable pour A1. Si tu veux modifier la
plage ou cette opération est possible, dis-le.
Cordialement.
Daniel
"Beronf" a écrit dans le message de
news:

Bonjour,

Est-il possible de convertir automatiquement la saisie dans une cellule
sans
qu'il s'agisse d'une référence circulaire? Par exemple je tape 2,5 (km)
en
A1
et excel écrit automatiquement 2500 (m) à la place (donc en A1!).

Je ne sais vraiment pas comment m'y prendre, et encore moins si c'est
réellement possible...

Merci pour votre aide.

Pierre









Avatar
Daniel
Je me permets de répondre :
Elle a l'avantage de traiter une plage de cellules d'un seul coup et en
vérifiant si la valeur de la cellule est numérique avant de multiplier.
Daniel
"michdenis" a écrit dans le message de news:
e74$j%
Bonjour Beronf,

copie ceci dans la feuille module où l'action se déroule :

La plage visée par la macro est la colonne A:A ... à toi d'adapter

'--------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

Dim Rg As Range
Set Rg = Intersect(Target, Range("A:A"))
If Not Rg Is Nothing Then
Application.EnableEvents = False
For Each c In Rg
If IsNumeric(c) Then
c.Value = c * 1000
c.NumberFormat = "# ""(m)"""
End If
Next
Application.EnableEvents = True
End If

End Sub
'--------------------------


Salutations!



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

Est-il possible de convertir automatiquement la saisie dans une cellule
sans
qu'il s'agisse d'une référence circulaire? Par exemple je tape 2,5 (km) en
A1
et excel écrit automatiquement 2500 (m) à la place (donc en A1!).

Je ne sais vraiment pas comment m'y prendre, et encore moins si c'est
réellement possible...

Merci pour votre aide.

Pierre




Avatar
Daniel
Je me permets de répondre :
Elle a l'avantage de traiter une plage de cellules d'un seul coup et en
vérifiant si la valeur de la cellule est numérique avant de multiplier.
Daniel

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

Bonsoir,

Merci pour ton aide. Ta methode me semble plus complexe que celle de
Daniel.
Quel est son avantage (je débute et je ne comprends pas encore tout...).

Pierre


Bonjour Beronf,

copie ceci dans la feuille module où l'action se déroule :

La plage visée par la macro est la colonne A:A ... à toi d'adapter

'--------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

Dim Rg As Range
Set Rg = Intersect(Target, Range("A:A"))
If Not Rg Is Nothing Then
Application.EnableEvents = False
For Each c In Rg
If IsNumeric(c) Then
c.Value = c * 1000
c.NumberFormat = "# ""(m)"""
End If
Next
Application.EnableEvents = True
End If

End Sub
'--------------------------


Salutations!



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

Est-il possible de convertir automatiquement la saisie dans une cellule
sans
qu'il s'agisse d'une référence circulaire? Par exemple je tape 2,5 (km)
en A1
et excel écrit automatiquement 2500 (m) à la place (donc en A1!).

Je ne sais vraiment pas comment m'y prendre, et encore moins si c'est
réellement possible...

Merci pour votre aide.

Pierre