OVH Cloud OVH Cloud

saisie nombre en format texte

15 réponses
Avatar
F.F.
bonjour à tous,

Je ne suis pas très "pro" dans l'utilisation d'excel et je bute devant le
problème suivant.

J'ai récupéré une liste d'une base de données où figurent des nombres, mais
pour les besoins ultéreiurs d'un traitement, j'ai besoin que ces nombres
soient considérés comme du TEXTE. (d'ailleurs la base récupérée me les
affiche ainsi et c'est bien).

Par contre si s'ajoute des lignes dans le tableau, les chiffres sont
considérés au format NOMBRE. Qui plus est j'ai besoin que le "0" soit
affiché en première position "01234"
J'ai essayé de formater la cellule en texte : cela ne marche pas
J'ai également éssayé de recopier une ligne ou le format était le bon (une
ligne importée de ma base) et de l'éditer ensuite, mais lorsque je valide,
la cellule est à nouveau formatée en NOMBRE.

Je ne sais pas sis je suis clair !!

Merci pour vos réponses ...

10 réponses

1 2
Avatar
docm
Bonjour LeSteph

Ta macro provoque une bouche sans fin.

"LeSteph" wrote in message
news:
Bonjour,
Bonne idée mais en VBA on peut faire plus direct
dans le code de la feuille:
'***
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
With Target.Cells
If IsNumeric(.Value) Then
.Value = "'" & .Value
End If
End With
End If
End Sub
'***
' ;-)
'leSteph

"bruno" a écrit dans le message de
news:41399d52$0$31368$

"LeSteph" a écrit dans le message de
news:413961cc$0$31369$
| Bonjour FF,
|
| Pour traiter globalement:
| selectionner la colonne données convertir...Suivant... texte..
|
| Mais cela ne résoud pas ton pb lors de la saisie:
| tu peux mettre une quote ' devant le nombre
| ainsi: '12 sera considéré comme du texte
|

Pour aller plus vite, tu peux utiliser une macro :

Sub Format_Texte()
'
' Cette macro force les cellules de la sélection au format texte en
ajoutant

le caractère ' en début de chaine.
'
'
Dim ChMess As String
Dim ChTitle As String
Dim Vide As String
Vide = ""
ChMess = "Voulez-vous forcer les cellules Sélectionnées en format texte
?"


ChTitle = "Format Texte"
If MsgBox(ChMess, vbYesNo, ChTitle) = vbYes Then

Application.ScreenUpdating = False
Dim C As Variant
For Each C In Selection
If IsEmpty(C) Or IsNull(C) Or C = Vide Then
'On sort si la cellule est vide
Else
C.Formula = "'" & C
End If
Next C
Application.ScreenUpdating = True
End If
End Sub








Avatar
LeSteph
Bonjour FF,

Pour traiter globalement:
selectionner la colonne données convertir...Suivant... texte..

Mais cela ne résoud pas ton pb lors de la saisie:
tu peux mettre une quote ' devant le nombre
ainsi: '12 sera considéré comme du texte

LeSteph

"F.F." a écrit dans le message de
news:41395a38$0$313$
bonjour à tous,

Je ne suis pas très "pro" dans l'utilisation d'excel et je bute devant le
problème suivant.

J'ai récupéré une liste d'une base de données où figurent des nombres,
mais

pour les besoins ultéreiurs d'un traitement, j'ai besoin que ces nombres
soient considérés comme du TEXTE. (d'ailleurs la base récupérée me les
affiche ainsi et c'est bien).

Par contre si s'ajoute des lignes dans le tableau, les chiffres sont
considérés au format NOMBRE. Qui plus est j'ai besoin que le "0" soit
affiché en première position "01234"
J'ai essayé de formater la cellule en texte : cela ne marche pas
J'ai également éssayé de recopier une ligne ou le format était le bon (une
ligne importée de ma base) et de l'éditer ensuite, mais lorsque je valide,
la cellule est à nouveau formatée en NOMBRE.

Je ne sais pas sis je suis clair !!

Merci pour vos réponses ...




Avatar
docm
LeSteph, tu peux le vérifier en utilisant F8 (le pas à pas)
ou en incrémentant une variable statique dans la macro:

Private Sub Worksheet_Change(ByVal Target As Range)
Static x As Long
x = x + 1
Debug.Print x
DoEvents
If Target.Column = 1 Then
With Target.Cells
If IsNumeric(.Value) Then
.Value = "'" & .Value
End If
End With
End If
End Sub


"LeSteph" wrote in message
news:#
Merci AV ,
je comprends parfaitement l'explication est claire
mais je ne comprends pas
chez moi aucune boucle sans fin???
Se pourrait-il que EnableEvents = False par défaut
..je vais vérifier en forçant true avant l'instruction et
je reviens ..




"AV" a écrit dans le message de
news:%
Vérifié même en plaçant une formule référant à la plage
pas de boucle sans fin!


Ca boucle inutilement car, comme tu modifies la valeur de "Target", tu
redéclenches chaque fois l'évènement "Worksheet_Change"
Pour éviter :
..........
If IsNumeric(.Value) Then
Application.EnableEvents = False
.Value = "'" & .Value
Application.EnableEvents = True
End If
.......

AV









Avatar
bruno
"LeSteph" a écrit dans le message de
news:413961cc$0$31369$
| Bonjour FF,
|
| Pour traiter globalement:
| selectionner la colonne données convertir...Suivant... texte..
|
| Mais cela ne résoud pas ton pb lors de la saisie:
| tu peux mettre une quote ' devant le nombre
| ainsi: '12 sera considéré comme du texte
|

Pour aller plus vite, tu peux utiliser une macro :

Sub Format_Texte()
'
' Cette macro force les cellules de la sélection au format texte en ajoutant
le caractère ' en début de chaine.
'
'
Dim ChMess As String
Dim ChTitle As String
Dim Vide As String
Vide = ""
ChMess = "Voulez-vous forcer les cellules Sélectionnées en format texte ?"
ChTitle = "Format Texte"
If MsgBox(ChMess, vbYesNo, ChTitle) = vbYes Then

Application.ScreenUpdating = False
Dim C As Variant
For Each C In Selection
If IsEmpty(C) Or IsNull(C) Or C = Vide Then
'On sort si la cellule est vide
Else
C.Formula = "'" & C
End If
Next C
Application.ScreenUpdating = True
End If
End Sub
Avatar
LeSteph
Bonjour,
Bonne idée mais en VBA on peut faire plus direct
dans le code de la feuille:
'***
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
With Target.Cells
If IsNumeric(.Value) Then
.Value = "'" & .Value
End If
End With
End If
End Sub
'***
' ;-)
'leSteph

"bruno" a écrit dans le message de
news:41399d52$0$31368$

"LeSteph" a écrit dans le message de
news:413961cc$0$31369$
| Bonjour FF,
|
| Pour traiter globalement:
| selectionner la colonne données convertir...Suivant... texte..
|
| Mais cela ne résoud pas ton pb lors de la saisie:
| tu peux mettre une quote ' devant le nombre
| ainsi: '12 sera considéré comme du texte
|

Pour aller plus vite, tu peux utiliser une macro :

Sub Format_Texte()
'
' Cette macro force les cellules de la sélection au format texte en
ajoutant

le caractère ' en début de chaine.
'
'
Dim ChMess As String
Dim ChTitle As String
Dim Vide As String
Vide = ""
ChMess = "Voulez-vous forcer les cellules Sélectionnées en format texte ?"
ChTitle = "Format Texte"
If MsgBox(ChMess, vbYesNo, ChTitle) = vbYes Then

Application.ScreenUpdating = False
Dim C As Variant
For Each C In Selection
If IsEmpty(C) Or IsNull(C) Or C = Vide Then
'On sort si la cellule est vide
Else
C.Formula = "'" & C
End If
Next C
Application.ScreenUpdating = True
End If
End Sub




Avatar
docm

Ta macro provoque une bouche sans fin.
sans faim plutôt non ?



Mais, mais... se fouterait-elle de ma gueule? ;)

je vais l'essayer, ça allègera le caddy hebdomadaire (qui a dit
dromadaire ?)



Avatar
LeSteph
Bonjour Docm,
Au départ je ne préconnisai pas de macro car
FF a exprimé:>>Je ne suis pas très "pro" dans l'utilisation d'excel
J'ai écrit celle-ci à la volée en évennement Worksheet_change
(car celle gentillement proposée par Bruno me semble un peu plus
lourde en opérations que de mettre une quote devant un chiffre) .

Sinon à l'instant l'ayant testée (xl2003) elle ne génère pas une telle
boucle.

Peux-tu préciser dans quelle circonstances tu obtiens cette boucle?
Ainsi je vais pouvoir rectifier (si tant est que) FF souhaite une macro...
Merci pour ta prévenance ,en attendant je vais revérifier, si calculs sur
Target etc...

Amicalement

LeSteph


"docm" a écrit dans le message de
news:
Bonjour LeSteph

Ta macro provoque une bouche sans fin.

"LeSteph" wrote in message
news:
Bonjour,
Bonne idée mais en VBA on peut faire plus direct
dans le code de la feuille:
'***
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
With Target.Cells
If IsNumeric(.Value) Then
.Value = "'" & .Value
End If
End With
End If
End Sub
'***
' ;-)
'leSteph

"bruno" a écrit dans le message
de


news:41399d52$0$31368$

"LeSteph" a écrit dans le message de
news:413961cc$0$31369$
| Bonjour FF,
|
| Pour traiter globalement:
| selectionner la colonne données convertir...Suivant... texte..
|
| Mais cela ne résoud pas ton pb lors de la saisie:
| tu peux mettre une quote ' devant le nombre
| ainsi: '12 sera considéré comme du texte
|

Pour aller plus vite, tu peux utiliser une macro :

Sub Format_Texte()
'
' Cette macro force les cellules de la sélection au format texte en
ajoutant

le caractère ' en début de chaine.
'
'
Dim ChMess As String
Dim ChTitle As String
Dim Vide As String
Vide = ""
ChMess = "Voulez-vous forcer les cellules Sélectionnées en format
texte



?"
ChTitle = "Format Texte"
If MsgBox(ChMess, vbYesNo, ChTitle) = vbYes Then

Application.ScreenUpdating = False
Dim C As Variant
For Each C In Selection
If IsEmpty(C) Or IsNull(C) Or C = Vide Then
'On sort si la cellule est vide
Else
C.Formula = "'" & C
End If
Next C
Application.ScreenUpdating = True
End If
End Sub












Avatar
LeSteph
Rebonjour,
Vérifié même en plaçant une formule référant à la plage
pas de boucle sans fin!

"docm" a exprimé ainsi:
Ta macro provoque une bouche sans fin.



A moins d'un lapsus évoquant quelque appel sans objet

;-) lol

"LeSteph" a écrit dans le message de
news:413aa901$0$8246$
Bonjour Docm,
Au départ je ne préconnisai pas de macro car
FF a exprimé:>>Je ne suis pas très "pro" dans l'utilisation d'excel
J'ai écrit celle-ci à la volée en évennement Worksheet_change
(car celle gentillement proposée par Bruno me semble un peu plus
lourde en opérations que de mettre une quote devant un chiffre) .

Sinon à l'instant l'ayant testée (xl2003) elle ne génère pas une telle
boucle.

Peux-tu préciser dans quelle circonstances tu obtiens cette boucle?
Ainsi je vais pouvoir rectifier (si tant est que) FF souhaite une macro...
Merci pour ta prévenance ,en attendant je vais revérifier, si calculs sur
Target etc...

Amicalement

LeSteph


"docm" a écrit dans le message de
news:
Bonjour LeSteph

Ta macro provoque une bouche sans fin.

"LeSteph" wrote in message
news:
Bonjour,
Bonne idée mais en VBA on peut faire plus direct
dans le code de la feuille:
'***
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
With Target.Cells
If IsNumeric(.Value) Then
.Value = "'" & .Value
End If
End With
End If
End Sub
'***
' ;-)
'leSteph

"bruno" a écrit dans le message
de


news:41399d52$0$31368$

"LeSteph" a écrit dans le message de
news:413961cc$0$31369$
| Bonjour FF,
|
| Pour traiter globalement:
| selectionner la colonne données convertir...Suivant... texte..
|
| Mais cela ne résoud pas ton pb lors de la saisie:
| tu peux mettre une quote ' devant le nombre
| ainsi: '12 sera considéré comme du texte
|

Pour aller plus vite, tu peux utiliser une macro :

Sub Format_Texte()
'
' Cette macro force les cellules de la sélection au format texte en
ajoutant

le caractère ' en début de chaine.
'
'
Dim ChMess As String
Dim ChTitle As String
Dim Vide As String
Vide = ""
ChMess = "Voulez-vous forcer les cellules Sélectionnées en format
texte



?"
ChTitle = "Format Texte"
If MsgBox(ChMess, vbYesNo, ChTitle) = vbYes Then

Application.ScreenUpdating = False
Dim C As Variant
For Each C In Selection
If IsEmpty(C) Or IsNull(C) Or C = Vide Then
'On sort si la cellule est vide
Else
C.Formula = "'" & C
End If
Next C
Application.ScreenUpdating = True
End If
End Sub
















Avatar
AV
Vérifié même en plaçant une formule référant à la plage
pas de boucle sans fin!


Ca boucle inutilement car, comme tu modifies la valeur de "Target", tu
redéclenches chaque fois l'évènement "Worksheet_Change"
Pour éviter :
..........
If IsNumeric(.Value) Then
Application.EnableEvents = False
.Value = "'" & .Value
Application.EnableEvents = True
End If
.......

AV

Avatar
LeSteph
Merci AV ,
je comprends parfaitement l'explication est claire
mais je ne comprends pas
chez moi aucune boucle sans fin???
Se pourrait-il que EnableEvents = False par défaut
..je vais vérifier en forçant true avant l'instruction et
je reviens ..




"AV" a écrit dans le message de
news:%
Vérifié même en plaçant une formule référant à la plage
pas de boucle sans fin!


Ca boucle inutilement car, comme tu modifies la valeur de "Target", tu
redéclenches chaque fois l'évènement "Worksheet_Change"
Pour éviter :
..........
If IsNumeric(.Value) Then
Application.EnableEvents = False
.Value = "'" & .Value
Application.EnableEvents = True
End If
.......

AV





1 2