Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Convertir en nombre par VBA

10 réponses
Avatar
Sunburn
Bonjour,
je souhaite convertir en nombre la premiere colonne de mon fichier.
je m'explique.
j'ai une macro qui me demande de selectionner un fichier.
Sur ce fichier, je voudrais convertir en nombre la premiere colone, puis
faire les traitements qui sont faits par cette macro. Mais comment puis-je
faire ??

Merci de votre aide.
YANN

PS : ma macro actuelle
------
Sub ImportBal()
rep = MsgBox("Ce module va vous permettre d'importer la balance en
choisissant le fichier de votre choix." _
& vbLf & "Etes-vous sûr de vouloir continuer", vbYesNo)
If rep = vbNo Then Exit Sub
Chemin = ActiveWorkbook.path
ChDrive (Mid(ActiveWorkbook.path, 1, 1))
ChDir (Chemin)

Workbooks.Open Filename:=Application.GetOpenFilename("(*.xls),")
ActiveSheet.Range("A2",
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Address).Copy
ThisWorkbook.Sheets("Balances").Range("A3").PasteSpecial Paste:=xlPasteValues
ActiveWorkbook.Close

End Sub
----

10 réponses

Avatar
Daniel.C
Bonjour.

Le code suivant fait le travail, mais remplace les formules par leurs
valeurs (si une formule renvoie du texte, la conversion ne se ferait
pas). Si tu veux conserver les formules, enlèce les deux premières
lignes du code. J'ai utillisé la cellule B1, tu peux modifier.

Range("A1", [A65000].End(xlUp)).Copy
Range("A1", [A65000].End(xlUp)).PasteSpecial xlPasteValues
[B1] = 1
[B1].Copy
Range("A1", [A65000].End(xlUp)).PasteSpecial xlPasteAll, xlMultiply
[B1] = ""

Cordialement.
Daniel

Bonjour,
je souhaite convertir en nombre la premiere colonne de mon fichier.
je m'explique.
j'ai une macro qui me demande de selectionner un fichier.
Sur ce fichier, je voudrais convertir en nombre la premiere colone, puis
faire les traitements qui sont faits par cette macro. Mais comment puis-je
faire ??

Merci de votre aide.
YANN

PS : ma macro actuelle
------
Sub ImportBal()
rep = MsgBox("Ce module va vous permettre d'importer la balance en
choisissant le fichier de votre choix." _
& vbLf & "Etes-vous sûr de vouloir continuer", vbYesNo)
If rep = vbNo Then Exit Sub
Chemin = ActiveWorkbook.path
ChDrive (Mid(ActiveWorkbook.path, 1, 1))
ChDir (Chemin)

Workbooks.Open Filename:=Application.GetOpenFilename("(*.xls),")
ActiveSheet.Range("A2",
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Address).Copy
ThisWorkbook.Sheets("Balances").Range("A3").PasteSpecial Paste:=xlPasteValues
ActiveWorkbook.Close

End Sub
----


Avatar
michdenis
Ta procédure, je l'aurais écrite comme ceci :

'------------------------------------------
Sub test()
Dim Fichier As String, X
Dim DerLig As Long, DerCol As Integer
Dim Chemin As String, Wk As Workbook
If MsgBox("Ce module va vous permettre " & _
"d'importer la balance en choisissant le " & _
"fichier de votre choix." & vbLf & _
"Etes-vous sûr de vouloir continuer", vbYesNo) = vbNo Then
Exit Sub
End If
Chemin = ActiveWorkbook.Path
If Chemin = "" Then
Chemin = Application.DefaultFilePath
End If
ChDrive (Mid(ActiveWorkbook.Path, 1, 1))
ChDir (Chemin)
Application.ScreenUpdating = False
Fichier = Application.GetOpenFilename("(*.xls),xls", , , , False)
If TypeName(Fichier) = "Boolean" Then
MsgBox "Opération annulée. Aucun fichier sélectionné"
Exit Sub
Else
Set Wk = Workbooks.Open(Fichier)
End If
With Wk.ActiveSheet
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
X = .Range(.Range("A2"), .Cells(DerLig, DerCol))
End With
With ThisWorkbook.Sheets("Feuil1")
.Range("A3").Resize(UBound(X, 1), UBound(X, 2)) = X
End With
Wk.Close

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

Pour ce qui est de transformer ce que contient la colonne A
en numérique, faudrait d'abord savoir ce qu'il y a dedans.



"Sunburn" a écrit dans le message de
news:
Bonjour,
je souhaite convertir en nombre la premiere colonne de mon fichier.
je m'explique.
j'ai une macro qui me demande de selectionner un fichier.
Sur ce fichier, je voudrais convertir en nombre la premiere colone, puis
faire les traitements qui sont faits par cette macro. Mais comment puis-je
faire ??

Merci de votre aide.
YANN

PS : ma macro actuelle
------
Sub ImportBal()
rep = MsgBox("Ce module va vous permettre d'importer la balance en
choisissant le fichier de votre choix." _
& vbLf & "Etes-vous sûr de vouloir continuer", vbYesNo)
If rep = vbNo Then Exit Sub
Chemin = ActiveWorkbook.path
ChDrive (Mid(ActiveWorkbook.path, 1, 1))
ChDir (Chemin)

Workbooks.Open Filename:=Application.GetOpenFilename("(*.xls),")
ActiveSheet.Range("A2",
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Address).Copy
ThisWorkbook.Sheets("Balances").Range("A3").PasteSpecial
Paste:=xlPasteValues
ActiveWorkbook.Close

End Sub
----
Avatar
Sunburn
Bonjour,
alors, dans ma première colonne, ce sont uniquement des chiffres.
mais il y a le petit triangle vert qui me propose de les convertir en nombre.
C'est cette opération que je souhaite faire.

Merci
YANN
Avatar
Sunburn
Euh, en fait, la colonne A ne contient pas de formule. ce sont des chiffres.
mais j'ai un petit onglet vert qui me propose de les convertir en nombre.
c'est cette opération que je souhaite réaliser.
Merci.
YANN
PS : j'en ai parlé aussi à michdenis qui m'aide sur ce post.

"Daniel.C" a écrit :

Bonjour.

Le code suivant fait le travail, mais remplace les formules par leurs
valeurs (si une formule renvoie du texte, la conversion ne se ferait
pas). Si tu veux conserver les formules, enlèce les deux premières
lignes du code. J'ai utillisé la cellule B1, tu peux modifier.

Range("A1", [A65000].End(xlUp)).Copy
Range("A1", [A65000].End(xlUp)).PasteSpecial xlPasteValues
[B1] = 1
[B1].Copy
Range("A1", [A65000].End(xlUp)).PasteSpecial xlPasteAll, xlMultiply
[B1] = ""

Cordialement.
Daniel

> Bonjour,
> je souhaite convertir en nombre la premiere colonne de mon fichier.
> je m'explique.
> j'ai une macro qui me demande de selectionner un fichier.
> Sur ce fichier, je voudrais convertir en nombre la premiere colone, puis
> faire les traitements qui sont faits par cette macro. Mais comment puis-je
> faire ??
>
> Merci de votre aide.
> YANN
>
> PS : ma macro actuelle
> ------
> Sub ImportBal()
> rep = MsgBox("Ce module va vous permettre d'importer la balance en
> choisissant le fichier de votre choix." _
> & vbLf & "Etes-vous sûr de vouloir continuer", vbYesNo)
> If rep = vbNo Then Exit Sub
> Chemin = ActiveWorkbook.path
> ChDrive (Mid(ActiveWorkbook.path, 1, 1))
> ChDir (Chemin)
>
> Workbooks.Open Filename:=Application.GetOpenFilename("(*.xls),")
> ActiveSheet.Range("A2",
> ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Address).Copy
> ThisWorkbook.Sheets("Balances").Range("A3").PasteSpecial Paste:=xlPasteValues
> ActiveWorkbook.Close
>
> End Sub
> ----





Avatar
Daniel.C
Alors :

[B1] = 1
[B1].Copy
Range("A1", [A65000].End(xlUp)).PasteSpecial xlPasteAll, xlMultiply
[B1] = ""

Euh, en fait, la colonne A ne contient pas de formule. ce sont des chiffres.
mais j'ai un petit onglet vert qui me propose de les convertir en nombre.
c'est cette opération que je souhaite réaliser.
Merci.
YANN
PS : j'en ai parlé aussi à michdenis qui m'aide sur ce post.

"Daniel.C" a écrit :

Bonjour.

Le code suivant fait le travail, mais remplace les formules par leurs
valeurs (si une formule renvoie du texte, la conversion ne se ferait
pas). Si tu veux conserver les formules, enlèce les deux premières
lignes du code. J'ai utillisé la cellule B1, tu peux modifier.

Range("A1", [A65000].End(xlUp)).Copy
Range("A1", [A65000].End(xlUp)).PasteSpecial xlPasteValues
[B1] = 1
[B1].Copy
Range("A1", [A65000].End(xlUp)).PasteSpecial xlPasteAll, xlMultiply
[B1] = ""

Cordialement.
Daniel

Bonjour,
je souhaite convertir en nombre la premiere colonne de mon fichier.
je m'explique.
j'ai une macro qui me demande de selectionner un fichier.
Sur ce fichier, je voudrais convertir en nombre la premiere colone, puis
faire les traitements qui sont faits par cette macro. Mais comment puis-je
faire ??

Merci de votre aide.
YANN

PS : ma macro actuelle
------
Sub ImportBal()
rep = MsgBox("Ce module va vous permettre d'importer la balance en
choisissant le fichier de votre choix." _
& vbLf & "Etes-vous sûr de vouloir continuer", vbYesNo)
If rep = vbNo Then Exit Sub
Chemin = ActiveWorkbook.path
ChDrive (Mid(ActiveWorkbook.path, 1, 1))
ChDir (Chemin)

Workbooks.Open Filename:=Application.GetOpenFilename("(*.xls),")
ActiveSheet.Range("A2",
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Address).Copy
ThisWorkbook.Sheets("Balances").Range("A3").PasteSpecial
Paste:=xlPasteValues ActiveWorkbook.Close

End Sub
----









Avatar
Daniel.j
Pour convertir du texte

Sub TexteEnChiffre()
Dim maZone As Range
Set maZone = Range("A1:" & Range("A100").End(xlUp).Address) 'Définit plage
maZone.Select
Dim unecellule As Object
For Each unecellule In Selection
valeur = ActiveCell.Value
If valeur = "" Then 'Saute cellules vides
GoTo suite
End If
valnum = CDbl(valeur) 'convertit texte en chiffre
unecellule.Value = valnum
suite:
ActiveCell.Offset(1, 0).Select
Next
End Sub

Daniel
--
FAQ MPFE
http://dj.joss.free.fr/faq.htm
VBAXL
http://dj.joss.free.fr/

"Sunburn" a écrit dans le message de
news:
Bonjour,
alors, dans ma première colonne, ce sont uniquement des chiffres.
mais il y a le petit triangle vert qui me propose de les convertir en
nombre.
C'est cette opération que je souhaite faire.

Merci
YANN


Avatar
michdenis
Cette procédure devrait aussi transformer tes cellules en texte
en colonne A:A

'-------------------------------------------
Sub test()
Dim Fichier As String, X
Dim DerLig As Long, DerCol As Integer
Dim Chemin As String, Wk As Workbook
If MsgBox("Ce module va vous permettre " & _
"d'importer la balance en choisissant le " & _
"fichier de votre choix." & vbLf & vbLf & _
"Etes-vous sûr de vouloir continuer", vbYesNo) = vbNo Then
Exit Sub
End If
Chemin = ActiveWorkbook.Path
If Chemin = "" Then
Chemin = Application.DefaultFilePath
End If
ChDrive (Mid(ActiveWorkbook.Path, 1, 1))
ChDir (Chemin)
Application.ScreenUpdating = False
Fichier = Application.GetOpenFilename("(*.xls),xls", , , , False)
If TypeName(Fichier) = "Boolean" Then
MsgBox "Opération annulée. Aucun fichier sélectionné"
Exit Sub
Else
Set Wk = Workbooks.Open(Fichier)
End If
With Wk.ActiveSheet
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
X = .Range(.Range("A2"), .Cells(DerLig, DerCol))
End With
With ThisWorkbook.Sheets("Balances")
.Range("A3").Resize(UBound(X, 1)).ClearContents
.Range("A3").Resize(UBound(X, 1)).NumberFormat = "General"
.Range("A3").Resize(UBound(X, 1), UBound(X, 2)) = X
End With
Wk.Close False
End Sub
'-------------------------------------------



"Sunburn" a écrit dans le message de
news:
Bonjour,
alors, dans ma première colonne, ce sont uniquement des chiffres.
mais il y a le petit triangle vert qui me propose de les convertir en
nombre.
C'est cette opération que je souhaite faire.

Merci
YANN
Avatar
Sunburn
Re,
je viens d'essayer : il me met "erreur d'execution 13 : incompatibilité de
type"
??
Merci

"Daniel.j" a écrit :

Pour convertir du texte

Sub TexteEnChiffre()
Dim maZone As Range
Set maZone = Range("A1:" & Range("A100").End(xlUp).Address) 'Définit plage
maZone.Select
Dim unecellule As Object
For Each unecellule In Selection
valeur = ActiveCell.Value
If valeur = "" Then 'Saute cellules vides
GoTo suite
End If
valnum = CDbl(valeur) 'convertit texte en chiffre
unecellule.Value = valnum
suite:
ActiveCell.Offset(1, 0).Select
Next
End Sub

Daniel
--
FAQ MPFE
http://dj.joss.free.fr/faq.htm
VBAXL
http://dj.joss.free.fr/

"Sunburn" a écrit dans le message de
news:
> Bonjour,
> alors, dans ma première colonne, ce sont uniquement des chiffres.
> mais il y a le petit triangle vert qui me propose de les convertir en
> nombre.
> C'est cette opération que je souhaite faire.
>
> Merci
> YANN





Avatar
Daniel.j
essaie en ajoutant
On Error Resume Next
avant cette ligne
valnum = CDbl(valeur) 'convertit texte en chiffre

Daniel


"Sunburn" a écrit dans le message de
news:
Re,
je viens d'essayer : il me met "erreur d'execution 13 : incompatibilité de
type"
??
Merci

"Daniel.j" a écrit :

Pour convertir du texte

Sub TexteEnChiffre()
Dim maZone As Range
Set maZone = Range("A1:" & Range("A100").End(xlUp).Address) 'Définit
plage
maZone.Select
Dim unecellule As Object
For Each unecellule In Selection
valeur = ActiveCell.Value
If valeur = "" Then 'Saute cellules vides
GoTo suite
End If
valnum = CDbl(valeur) 'convertit texte en chiffre
unecellule.Value = valnum
suite:
ActiveCell.Offset(1, 0).Select
Next
End Sub

Daniel
--
FAQ MPFE
http://dj.joss.free.fr/faq.htm
VBAXL
http://dj.joss.free.fr/

"Sunburn" a écrit dans le message de
news:
> Bonjour,
> alors, dans ma première colonne, ce sont uniquement des chiffres.
> mais il y a le petit triangle vert qui me propose de les convertir en
> nombre.
> C'est cette opération que je souhaite faire.
>
> Merci
> YANN







Avatar
Sunburn
C'est impecable, magnifique, ça fonctionne du toner !!!
Merci encore.
YANN

"michdenis" a écrit :

Cette procédure devrait aussi transformer tes cellules en texte
en colonne A:A

'-------------------------------------------
Sub test()
Dim Fichier As String, X
Dim DerLig As Long, DerCol As Integer
Dim Chemin As String, Wk As Workbook
If MsgBox("Ce module va vous permettre " & _
"d'importer la balance en choisissant le " & _
"fichier de votre choix." & vbLf & vbLf & _
"Etes-vous sûr de vouloir continuer", vbYesNo) = vbNo Then
Exit Sub
End If
Chemin = ActiveWorkbook.Path
If Chemin = "" Then
Chemin = Application.DefaultFilePath
End If
ChDrive (Mid(ActiveWorkbook.Path, 1, 1))
ChDir (Chemin)
Application.ScreenUpdating = False
Fichier = Application.GetOpenFilename("(*.xls),xls", , , , False)
If TypeName(Fichier) = "Boolean" Then
MsgBox "Opération annulée. Aucun fichier sélectionné"
Exit Sub
Else
Set Wk = Workbooks.Open(Fichier)
End If
With Wk.ActiveSheet
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
X = .Range(.Range("A2"), .Cells(DerLig, DerCol))
End With
With ThisWorkbook.Sheets("Balances")
.Range("A3").Resize(UBound(X, 1)).ClearContents
.Range("A3").Resize(UBound(X, 1)).NumberFormat = "General"
.Range("A3").Resize(UBound(X, 1), UBound(X, 2)) = X
End With
Wk.Close False
End Sub
'-------------------------------------------



"Sunburn" a écrit dans le message de
news:
Bonjour,
alors, dans ma première colonne, ce sont uniquement des chiffres.
mais il y a le petit triangle vert qui me propose de les convertir en
nombre.
C'est cette opération que je souhaite faire.

Merci
YANN