VB chiffre entier au lieu de chiffre décimal
mh
-
melanie1324 Messages postés 1504 Date d'inscription Statut Membre Dernière intervention -
melanie1324 Messages postés 1504 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai bien regardé vos différentes réponses mais n'ai pas trouvé la solution à mon problème qui est le suivant : dans le fichier source j'ai des chiffres avec deux décimales, et dans le fichier après run de la macro, j'ai des chiffres entiers (non arrondis) et bien sûr les totaux sont faux. Je ne vois pas de fonction 'round' ou 'integer' donc je ne comprends pas d'où vient le problème. Qui peut m'aider car je débute en macro excel et celle-ci était déjà faite mais apparemment quelqu'un y a touché et du coup elle ne fonctionne plus. Les colonnes où les chiffres sont faux sont L et M.
Merci par avance
MH
-------------------------------------------------------------------------------------------------------------------
On Error GoTo MesErreurs
Workbooks.OpenText Filename:="H:\ecriture.txt", Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 4), _
Array(3, 1), Array(4, 2), Array(5, 2), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 4), _
Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15, 1), Array( _
16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), Array(21, 1), Array(22, 1)) _
, TrailingMinusNumbers:=True
ActiveWindow.Zoom = 10
Columns("B:B").Select
Selection.NumberFormat = "ddmmyy"
Columns("I:I").Select
Selection.NumberFormat = "ddmmyy"
Columns("I:I").Select
Selection.NumberFormat = "ddmmyy"
Columns("I:I").Select
Selection.NumberFormat = "ddmmyy"
' On compte le nombre de lignes du tableau et on le met dans la variable NBRLIGN
With ActiveSheet
.Activate
.Range("D" & .Range("D65536").End(xlUp)(1).Row).Select
End With
nbrlign = (ActiveSheet.Range("D65536").End(xlUp)(1).Row)
Columns("G:G").Select
Selection.NumberFormat = "@"
For ilign = 1 To nbrlign
Range("C" & ilign).Activate
un = ActiveCell.Value
deux = Left(ActiveCell.Value, 3)
trois = Len(ActiveCell.Value)
Select Case deux
Case "401"
Gtiers = Mid(un, 4, trois - 3)
ActiveCell.Value = "401000"
Range("G" & ilign).Activate
ActiveCell.Value = Gtiers
Case "411"
Gtiers = Mid(un, 4, trois - 3)
ActiveCell.Value = "411000"
Range("G" & ilign).Activate
ActiveCell.Value = Gtiers
End Select
Next ilign
For ilign = 1 To nbrlign
Range("K" & ilign).Activate
ActiveCell.Value = Val(ActiveCell.Value)
ActiveCell.NumberFormat = "0.000000"
Next ilign
For ilign = 1 To nbrlign
Range("L" & ilign).Activate
ActiveCell.Value = Val(ActiveCell.Value)
ActiveCell.NumberFormat = "0.00"
Next ilign
For ilign = 1 To nbrlign
Range("M" & ilign).Activate
ActiveCell.Value = Val(ActiveCell.Value)
ActiveCell.NumberFormat = "0.00"
Next ilign
For ilign = 1 To nbrlign
Range("N" & ilign).Activate
ActiveCell.Value = "G"
Next ilign
Columns("A:A").Select
Selection.NumberFormat = "@"
For ilign = 1 To nbrlign
Range("A" & ilign).Activate
Select Case Len(ActiveCell.Value)
Case 1
trs = ActiveCell.Value
ActiveCell.Value = "0" & trs
End Select
Next ilign
For ilign = 1 To nbrlign
Range("J" & ilign).Activate
Monnaie = ActiveCell.Value
Select Case Monnaie
Case "$"
ActiveCell.Value = "USD"
End Select
Next ilign
Range("N1").Select
Selection.EntireColumn.Insert
For ilign = 1 To nbrlign
Range("J" & ilign).Activate
Select Case ActiveCell.Value
Case Is <> "EUR"
Range("K" & ilign).Activate
ValDevise = ActiveCell.Value
Range("L" & ilign).Activate
Select Case ActiveCell.Value
Case Is > 0
COLL = ActiveCell.Value
ActiveCell.Value = COLL / ValDevise
Range("N" & ilign).Activate
ActiveCell.Value = COLL
Case Else
Range("M" & ilign).Activate
COLM = ActiveCell.Value
ActiveCell.Value = COLM / ValDevise
Range("N" & ilign).Activate
ActiveCell.Value = COLM
End Select
End Select
Next ilign
Beep
ActiveWindow.Zoom = 100
Range("A1").Select
Msg = MsgBox("Travail terminé", vbInformation + vbOKOnly, "Macro Ecritures Comptables")
Exit Sub
MesErreurs:
Msg = MsgBox("Erreur d'exécution " & Err.Number & vbCrLf & vbCrLf & Err.Description, vbCritical + vbOKOnly, "Macro Ecritures Comptables")
End Sub
J'ai bien regardé vos différentes réponses mais n'ai pas trouvé la solution à mon problème qui est le suivant : dans le fichier source j'ai des chiffres avec deux décimales, et dans le fichier après run de la macro, j'ai des chiffres entiers (non arrondis) et bien sûr les totaux sont faux. Je ne vois pas de fonction 'round' ou 'integer' donc je ne comprends pas d'où vient le problème. Qui peut m'aider car je débute en macro excel et celle-ci était déjà faite mais apparemment quelqu'un y a touché et du coup elle ne fonctionne plus. Les colonnes où les chiffres sont faux sont L et M.
Merci par avance
MH
-------------------------------------------------------------------------------------------------------------------
On Error GoTo MesErreurs
Workbooks.OpenText Filename:="H:\ecriture.txt", Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 4), _
Array(3, 1), Array(4, 2), Array(5, 2), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 4), _
Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15, 1), Array( _
16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), Array(21, 1), Array(22, 1)) _
, TrailingMinusNumbers:=True
ActiveWindow.Zoom = 10
Columns("B:B").Select
Selection.NumberFormat = "ddmmyy"
Columns("I:I").Select
Selection.NumberFormat = "ddmmyy"
Columns("I:I").Select
Selection.NumberFormat = "ddmmyy"
Columns("I:I").Select
Selection.NumberFormat = "ddmmyy"
' On compte le nombre de lignes du tableau et on le met dans la variable NBRLIGN
With ActiveSheet
.Activate
.Range("D" & .Range("D65536").End(xlUp)(1).Row).Select
End With
nbrlign = (ActiveSheet.Range("D65536").End(xlUp)(1).Row)
Columns("G:G").Select
Selection.NumberFormat = "@"
For ilign = 1 To nbrlign
Range("C" & ilign).Activate
un = ActiveCell.Value
deux = Left(ActiveCell.Value, 3)
trois = Len(ActiveCell.Value)
Select Case deux
Case "401"
Gtiers = Mid(un, 4, trois - 3)
ActiveCell.Value = "401000"
Range("G" & ilign).Activate
ActiveCell.Value = Gtiers
Case "411"
Gtiers = Mid(un, 4, trois - 3)
ActiveCell.Value = "411000"
Range("G" & ilign).Activate
ActiveCell.Value = Gtiers
End Select
Next ilign
For ilign = 1 To nbrlign
Range("K" & ilign).Activate
ActiveCell.Value = Val(ActiveCell.Value)
ActiveCell.NumberFormat = "0.000000"
Next ilign
For ilign = 1 To nbrlign
Range("L" & ilign).Activate
ActiveCell.Value = Val(ActiveCell.Value)
ActiveCell.NumberFormat = "0.00"
Next ilign
For ilign = 1 To nbrlign
Range("M" & ilign).Activate
ActiveCell.Value = Val(ActiveCell.Value)
ActiveCell.NumberFormat = "0.00"
Next ilign
For ilign = 1 To nbrlign
Range("N" & ilign).Activate
ActiveCell.Value = "G"
Next ilign
Columns("A:A").Select
Selection.NumberFormat = "@"
For ilign = 1 To nbrlign
Range("A" & ilign).Activate
Select Case Len(ActiveCell.Value)
Case 1
trs = ActiveCell.Value
ActiveCell.Value = "0" & trs
End Select
Next ilign
For ilign = 1 To nbrlign
Range("J" & ilign).Activate
Monnaie = ActiveCell.Value
Select Case Monnaie
Case "$"
ActiveCell.Value = "USD"
End Select
Next ilign
Range("N1").Select
Selection.EntireColumn.Insert
For ilign = 1 To nbrlign
Range("J" & ilign).Activate
Select Case ActiveCell.Value
Case Is <> "EUR"
Range("K" & ilign).Activate
ValDevise = ActiveCell.Value
Range("L" & ilign).Activate
Select Case ActiveCell.Value
Case Is > 0
COLL = ActiveCell.Value
ActiveCell.Value = COLL / ValDevise
Range("N" & ilign).Activate
ActiveCell.Value = COLL
Case Else
Range("M" & ilign).Activate
COLM = ActiveCell.Value
ActiveCell.Value = COLM / ValDevise
Range("N" & ilign).Activate
ActiveCell.Value = COLM
End Select
End Select
Next ilign
Beep
ActiveWindow.Zoom = 100
Range("A1").Select
Msg = MsgBox("Travail terminé", vbInformation + vbOKOnly, "Macro Ecritures Comptables")
Exit Sub
MesErreurs:
Msg = MsgBox("Erreur d'exécution " & Err.Number & vbCrLf & vbCrLf & Err.Description, vbCritical + vbOKOnly, "Macro Ecritures Comptables")
End Sub
A voir également:
- VB chiffre entier au lieu de chiffre décimal
- Excel trier par ordre croissant chiffre - Guide
- Clavier iphone chiffre et lettre - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Chiffre en lettre - Télécharger - Outils professionnels
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
2 réponses
bonjour,
je ne sais pas d'où vient ton problème. Mais je vais te simplifier la macro. Tu copies et colles à l'endroit ou c'était. ce qui est en vert sont les explications de ce que cela fait et cela pourra peut être t'aider à trouver ce qui ne va pas.:
On Error GoTo MesErreurs
Workbooks.OpenText Filename:="H:\ecriture.txt", Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 4), _
Array(3, 1), Array(4, 2), Array(5, 2), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 4), _
Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15, 1), Array( _
16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), Array(21, 1), Array(22, 1)) _
, TrailingMinusNumbers:=True
ActiveWindow.Zoom = 10
'on sélectionne la colonne B et I et on les mets au format jjmmmaa
Columns("B:B").Select
Selection.NumberFormat = "ddmmyy"
Columns("I:I").Select
Selection.NumberFormat = "ddmmyy"
' On compte le nombre de lignes du tableau et on le met dans la variable NBRLIGN
With ActiveSheet
.Activate
.Range("D" & .Range("D65536").End(xlUp)(1).Row).Select
End With
nbrlign = (ActiveSheet.Range("D65536").End(xlUp)(1).Row)
'on sélectionne la colonne A et G et on la emt au format d'une adresse mail
Columns("G:G").Select
Selection.NumberFormat = "@"
Columns("A:A").Select
Selection.NumberFormat = "@"
For ilign = 1 To nbrlign
'on va sélectionner la colonne C pour chacune des lignes
Range("C" & ilign).Activate
'la variable un est égale à la valeur de la cellule
un = ActiveCell.Value
'la variable deux est égale aux 3 premiers caractères à gauche de la cellule
deux = Left(ActiveCell.Value, 3)
'trois est égal au nombre de caractère de la cellule
trois = Len(ActiveCell.Value)
Select Case deux
'si deux = 401
Case "401"
Gtiers = Mid(un, 4, trois - 3)
'la cellule = 401000
ActiveCell.Value = "401000"
Range("G" & ilign).Activate
ActiveCell.Value = Gtiers
Case "411"
'si deux = 411
Gtiers = Mid(un, 4, trois - 3)
'la cellule = 411000
ActiveCell.Value = "411000"
Range("G" & ilign).Activate
ActiveCell.Value = Gtiers
End Select
' si en colonne j tu as la valeur $ alors on écrit USD
Monnaie = Cells(ilign, 10).Value
If Monnaie = "$" Then
ActiveCell.Value = "USD"
End If
' la colonne k a pour format décimal avec 6 chiffres derrière la virgule
Range("K" & ilign).Activate
ActiveCell.Value = Val(ActiveCell.Value)
ActiveCell.NumberFormat = "0.000000"
' la colonne l a pour format décimal avec 2 chiffres derrière la virgule
Range("L" & ilign).Activate
ActiveCell.Value = Val(ActiveCell.Value)
ActiveCell.NumberFormat = "0.00"
' la colonne M a pour format décimal avec 2 chiffres derrière la virgule
Range("M" & ilign).Activate
ActiveCell.Value = Val(ActiveCell.Value)
ActiveCell.NumberFormat = "0.00"
'la colonne N a pour valeur G
Cells(ilign, 14) = "G"
'si le nombre de caractères de la colonna A = 1 alors la colonne A = 0 + valeur de la cellule
If Len(Cells(ilign, 1)) = 1 Then
trs = Cells(ilign, 1).Value
ActiveCell.Value = "0" & trs
End If
'on sélectionnes la colonne N et on rajoute une colonne
Range("N1").Select
Selection.EntireColumn.Insert
'si la colonne J <> eur
Range("J" & ilign).Activate
Select Case ActiveCell.Value
If Cells(ilign, 10) <> "EUR" Then
'la variable valdevise = colonne K
ValDevise = Cells(ilign, 11).Value
'si ta colonne L est supérieure à 0
If Cells(ilign, 12) > 0 Then
'la variable coll est égale à la valeur de ta cellule
coll = Cells(ilign, 12)
'la colonne l est égale à la conne L / taux de la colonne K
Cells(ilign, 12) = coll / ValDevise
'la colonne N est égale à la colonne L avant la division
Cells(ilign, 14) = coll
Else
' si la colonne L = 0
' colm = valeur de la colonne M
COLM = Cells(ilign, 13)
'la colonne M = M/ la taux de la colonne K
Cells(ilign, 13) = COLM / ValDevise
'la colonne N est égale à la colonne M avant la division
Cells(ilign, 14) = COLM
End If
End If
Next ilign
'un petit bip sonore
Beep
'on zomme à 100%
ActiveWindow.Zoom = 100
'on sélectionnes la cellule A1
Range("A1").Select
'on dit que la macro est terminée
Msg = MsgBox("Travail terminé", vbInformation + vbOKOnly, "Macro Ecritures Comptables")
Exit Sub
MesErreurs:
' ce message apparaît s'il y a des problèmes
Msg = MsgBox("Erreur d'exécution " & Err.Number & vbCrLf & vbCrLf & Err.Description, vbCritical + vbOKOnly, "Macro Ecritures Comptables")
End Sub
End Sub
je ne sais pas d'où vient ton problème. Mais je vais te simplifier la macro. Tu copies et colles à l'endroit ou c'était. ce qui est en vert sont les explications de ce que cela fait et cela pourra peut être t'aider à trouver ce qui ne va pas.:
On Error GoTo MesErreurs
Workbooks.OpenText Filename:="H:\ecriture.txt", Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 4), _
Array(3, 1), Array(4, 2), Array(5, 2), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 4), _
Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15, 1), Array( _
16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), Array(21, 1), Array(22, 1)) _
, TrailingMinusNumbers:=True
ActiveWindow.Zoom = 10
'on sélectionne la colonne B et I et on les mets au format jjmmmaa
Columns("B:B").Select
Selection.NumberFormat = "ddmmyy"
Columns("I:I").Select
Selection.NumberFormat = "ddmmyy"
' On compte le nombre de lignes du tableau et on le met dans la variable NBRLIGN
With ActiveSheet
.Activate
.Range("D" & .Range("D65536").End(xlUp)(1).Row).Select
End With
nbrlign = (ActiveSheet.Range("D65536").End(xlUp)(1).Row)
'on sélectionne la colonne A et G et on la emt au format d'une adresse mail
Columns("G:G").Select
Selection.NumberFormat = "@"
Columns("A:A").Select
Selection.NumberFormat = "@"
For ilign = 1 To nbrlign
'on va sélectionner la colonne C pour chacune des lignes
Range("C" & ilign).Activate
'la variable un est égale à la valeur de la cellule
un = ActiveCell.Value
'la variable deux est égale aux 3 premiers caractères à gauche de la cellule
deux = Left(ActiveCell.Value, 3)
'trois est égal au nombre de caractère de la cellule
trois = Len(ActiveCell.Value)
Select Case deux
'si deux = 401
Case "401"
Gtiers = Mid(un, 4, trois - 3)
'la cellule = 401000
ActiveCell.Value = "401000"
Range("G" & ilign).Activate
ActiveCell.Value = Gtiers
Case "411"
'si deux = 411
Gtiers = Mid(un, 4, trois - 3)
'la cellule = 411000
ActiveCell.Value = "411000"
Range("G" & ilign).Activate
ActiveCell.Value = Gtiers
End Select
' si en colonne j tu as la valeur $ alors on écrit USD
Monnaie = Cells(ilign, 10).Value
If Monnaie = "$" Then
ActiveCell.Value = "USD"
End If
' la colonne k a pour format décimal avec 6 chiffres derrière la virgule
Range("K" & ilign).Activate
ActiveCell.Value = Val(ActiveCell.Value)
ActiveCell.NumberFormat = "0.000000"
' la colonne l a pour format décimal avec 2 chiffres derrière la virgule
Range("L" & ilign).Activate
ActiveCell.Value = Val(ActiveCell.Value)
ActiveCell.NumberFormat = "0.00"
' la colonne M a pour format décimal avec 2 chiffres derrière la virgule
Range("M" & ilign).Activate
ActiveCell.Value = Val(ActiveCell.Value)
ActiveCell.NumberFormat = "0.00"
'la colonne N a pour valeur G
Cells(ilign, 14) = "G"
'si le nombre de caractères de la colonna A = 1 alors la colonne A = 0 + valeur de la cellule
If Len(Cells(ilign, 1)) = 1 Then
trs = Cells(ilign, 1).Value
ActiveCell.Value = "0" & trs
End If
'on sélectionnes la colonne N et on rajoute une colonne
Range("N1").Select
Selection.EntireColumn.Insert
'si la colonne J <> eur
Range("J" & ilign).Activate
Select Case ActiveCell.Value
If Cells(ilign, 10) <> "EUR" Then
'la variable valdevise = colonne K
ValDevise = Cells(ilign, 11).Value
'si ta colonne L est supérieure à 0
If Cells(ilign, 12) > 0 Then
'la variable coll est égale à la valeur de ta cellule
coll = Cells(ilign, 12)
'la colonne l est égale à la conne L / taux de la colonne K
Cells(ilign, 12) = coll / ValDevise
'la colonne N est égale à la colonne L avant la division
Cells(ilign, 14) = coll
Else
' si la colonne L = 0
' colm = valeur de la colonne M
COLM = Cells(ilign, 13)
'la colonne M = M/ la taux de la colonne K
Cells(ilign, 13) = COLM / ValDevise
'la colonne N est égale à la colonne M avant la division
Cells(ilign, 14) = COLM
End If
End If
Next ilign
'un petit bip sonore
Beep
'on zomme à 100%
ActiveWindow.Zoom = 100
'on sélectionnes la cellule A1
Range("A1").Select
'on dit que la macro est terminée
Msg = MsgBox("Travail terminé", vbInformation + vbOKOnly, "Macro Ecritures Comptables")
Exit Sub
MesErreurs:
' ce message apparaît s'il y a des problèmes
Msg = MsgBox("Erreur d'exécution " & Err.Number & vbCrLf & vbCrLf & Err.Description, vbCritical + vbOKOnly, "Macro Ecritures Comptables")
End Sub
End Sub
donc si je te suis, tu ne veux aucun traitement sur les colonnes L et M, si c'est ca, voici ta macro :
On Error GoTo MesErreurs
Workbooks.OpenText Filename:="H:\ecriture.txt", Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 4), _
Array(3, 1), Array(4, 2), Array(5, 2), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 4), _
Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15, 1), Array( _
16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), Array(21, 1), Array(22, 1)) _
, TrailingMinusNumbers:=True
ActiveWindow.Zoom = 10
'on sélectionne la colonne B et I et on les mets au format jjmmmaa
Columns("B:B").Select
Selection.NumberFormat = "ddmmyy"
Columns("I:I").Select
Selection.NumberFormat = "ddmmyy"
' On compte le nombre de lignes du tableau et on le met dans la variable NBRLIGN
With ActiveSheet
.Activate
.Range("D" & .Range("D65536").End(xlUp)(1).Row).Select
End With
nbrlign = (ActiveSheet.Range("D65536").End(xlUp)(1).Row)
'on sélectionne la colonne A et G et on la emt au format d'une adresse mail
Columns("G:G").Select
Selection.NumberFormat = "@"
Columns("A:A").Select
Selection.NumberFormat = "@"
For ilign = 1 To nbrlign
'on va sélectionner la colonne C pour chacune des lignes
Range("C" & ilign).Activate
'la variable un est égale à la valeur de la cellule
un = ActiveCell.Value
'la variable deux est égale aux 3 premiers caractères à gauche de la cellule
deux = Left(ActiveCell.Value, 3)
'trois est égal au nombre de caractère de la cellule
trois = Len(ActiveCell.Value)
Select Case deux
'si deux = 401
Case "401"
Gtiers = Mid(un, 4, trois - 3)
'la cellule = 401000
ActiveCell.Value = "401000"
Range("G" & ilign).Activate
ActiveCell.Value = Gtiers
Case "411"
'si deux = 411
Gtiers = Mid(un, 4, trois - 3)
'la cellule = 411000
ActiveCell.Value = "411000"
Range("G" & ilign).Activate
ActiveCell.Value = Gtiers
End Select
' si en colonne j tu as la valeur $ alors on écrit USD
Monnaie = Cells(ilign, 10).Value
If Monnaie = "$" Then
ActiveCell.Value = "USD"
End If
' la colonne k a pour format décimal avec 6 chiffres derrière la virgule
Range("K" & ilign).Activate
ActiveCell.Value = Val(ActiveCell.Value)
ActiveCell.NumberFormat = "0.000000"
' la colonne l a pour format décimal avec 2 chiffres derrière la virgule
Range("L" & ilign).Activate
ActiveCell.NumberFormat = "0.00"
ActiveCell.Value = Val(ActiveCell.Value)
' la colonne M a pour format décimal avec 2 chiffres derrière la virgule
Range("M" & ilign).Activate
ActiveCell.NumberFormat = "0.00"
ActiveCell.Value = Val(ActiveCell.Value)
'la colonne N a pour valeur G
Cells(ilign, 14) = "G"
'si le nombre de caractères de la colonna A = 1 alors la colonne A = 0 + valeur de la cellule
If Len(Cells(ilign, 1)) = 1 Then
trs = Cells(ilign, 1).Value
ActiveCell.Value = "0" & trs
End If
Next ilign
'un petit bip sonore
Beep
'on zomme à 100%
ActiveWindow.Zoom = 100
'on sélectionnes la cellule A1
Range("A1").Select
'on dit que la macro est terminée
Msg = MsgBox("Travail terminé", vbInformation + vbOKOnly, "Macro Ecritures Comptables")
Exit Sub
MesErreurs:
' ce message apparaît s'il y a des problèmes
Msg = MsgBox("Erreur d'exécution " & Err.Number & vbCrLf & vbCrLf & Err.Description, vbCritical + vbOKOnly, "Macro Ecritures Comptables")
End Sub
End Sub
On Error GoTo MesErreurs
Workbooks.OpenText Filename:="H:\ecriture.txt", Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 4), _
Array(3, 1), Array(4, 2), Array(5, 2), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 4), _
Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15, 1), Array( _
16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), Array(21, 1), Array(22, 1)) _
, TrailingMinusNumbers:=True
ActiveWindow.Zoom = 10
'on sélectionne la colonne B et I et on les mets au format jjmmmaa
Columns("B:B").Select
Selection.NumberFormat = "ddmmyy"
Columns("I:I").Select
Selection.NumberFormat = "ddmmyy"
' On compte le nombre de lignes du tableau et on le met dans la variable NBRLIGN
With ActiveSheet
.Activate
.Range("D" & .Range("D65536").End(xlUp)(1).Row).Select
End With
nbrlign = (ActiveSheet.Range("D65536").End(xlUp)(1).Row)
'on sélectionne la colonne A et G et on la emt au format d'une adresse mail
Columns("G:G").Select
Selection.NumberFormat = "@"
Columns("A:A").Select
Selection.NumberFormat = "@"
For ilign = 1 To nbrlign
'on va sélectionner la colonne C pour chacune des lignes
Range("C" & ilign).Activate
'la variable un est égale à la valeur de la cellule
un = ActiveCell.Value
'la variable deux est égale aux 3 premiers caractères à gauche de la cellule
deux = Left(ActiveCell.Value, 3)
'trois est égal au nombre de caractère de la cellule
trois = Len(ActiveCell.Value)
Select Case deux
'si deux = 401
Case "401"
Gtiers = Mid(un, 4, trois - 3)
'la cellule = 401000
ActiveCell.Value = "401000"
Range("G" & ilign).Activate
ActiveCell.Value = Gtiers
Case "411"
'si deux = 411
Gtiers = Mid(un, 4, trois - 3)
'la cellule = 411000
ActiveCell.Value = "411000"
Range("G" & ilign).Activate
ActiveCell.Value = Gtiers
End Select
' si en colonne j tu as la valeur $ alors on écrit USD
Monnaie = Cells(ilign, 10).Value
If Monnaie = "$" Then
ActiveCell.Value = "USD"
End If
' la colonne k a pour format décimal avec 6 chiffres derrière la virgule
Range("K" & ilign).Activate
ActiveCell.Value = Val(ActiveCell.Value)
ActiveCell.NumberFormat = "0.000000"
' la colonne l a pour format décimal avec 2 chiffres derrière la virgule
Range("L" & ilign).Activate
ActiveCell.NumberFormat = "0.00"
ActiveCell.Value = Val(ActiveCell.Value)
' la colonne M a pour format décimal avec 2 chiffres derrière la virgule
Range("M" & ilign).Activate
ActiveCell.NumberFormat = "0.00"
ActiveCell.Value = Val(ActiveCell.Value)
'la colonne N a pour valeur G
Cells(ilign, 14) = "G"
'si le nombre de caractères de la colonna A = 1 alors la colonne A = 0 + valeur de la cellule
If Len(Cells(ilign, 1)) = 1 Then
trs = Cells(ilign, 1).Value
ActiveCell.Value = "0" & trs
End If
Next ilign
'un petit bip sonore
Beep
'on zomme à 100%
ActiveWindow.Zoom = 100
'on sélectionnes la cellule A1
Range("A1").Select
'on dit que la macro est terminée
Msg = MsgBox("Travail terminé", vbInformation + vbOKOnly, "Macro Ecritures Comptables")
Exit Sub
MesErreurs:
' ce message apparaît s'il y a des problèmes
Msg = MsgBox("Erreur d'exécution " & Err.Number & vbCrLf & vbCrLf & Err.Description, vbCritical + vbOKOnly, "Macro Ecritures Comptables")
End Sub
End Sub
Mélanie,
cela ne fonctionne toujours pas. La macro plante bien avant mon problème de chiffres et de décimales.
Voici la ligne qui est surlignée en bleue
If Cells(ilign, 10) <> "EUR" Then
et voici le message qui s'affiche :
Compile error : Statements and labels invalid between Select Case and first Case
Peux-tu m'aider ?
merci
mh
cela ne fonctionne toujours pas. La macro plante bien avant mon problème de chiffres et de décimales.
Voici la ligne qui est surlignée en bleue
If Cells(ilign, 10) <> "EUR" Then
et voici le message qui s'affiche :
Compile error : Statements and labels invalid between Select Case and first Case
Peux-tu m'aider ?
merci
mh
bonjour,
tu n'as pas du recopier le bon code parce que cette ligne n'y est plus.
En gros, efface tout ton code et mets uniquement celui-ci.
On Error GoTo MesErreurs
Workbooks.OpenText Filename:="H:\ecriture.txt", Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 4), _
Array(3, 1), Array(4, 2), Array(5, 2), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 4), _
Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15, 1), Array( _
16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), Array(21, 1), Array(22, 1)) _
, TrailingMinusNumbers:=True
ActiveWindow.Zoom = 10
'on sélectionne la colonne B et I et on les mets au format jjmmmaa
Columns("B:B").Select
Selection.NumberFormat = "ddmmyy"
Columns("I:I").Select
Selection.NumberFormat = "ddmmyy"
' On compte le nombre de lignes du tableau et on le met dans la variable NBRLIGN
With ActiveSheet
.Activate
.Range("D" & .Range("D65536").End(xlUp)(1).Row).Select
End With
nbrlign = (ActiveSheet.Range("D65536").End(xlUp)(1).Row)
'on sélectionne la colonne A et G et on la emt au format d'une adresse mail
Columns("G:G").Select
Selection.NumberFormat = "@"
Columns("A:A").Select
Selection.NumberFormat = "@"
For ilign = 1 To nbrlign
'on va sélectionner la colonne C pour chacune des lignes
Range("C" & ilign).Activate
'la variable un est égale à la valeur de la cellule
un = ActiveCell.Value
'la variable deux est égale aux 3 premiers caractères à gauche de la cellule
deux = Left(ActiveCell.Value, 3)
'trois est égal au nombre de caractère de la cellule
trois = Len(ActiveCell.Value)
Select Case deux
'si deux = 401
Case "401"
Gtiers = Mid(un, 4, trois - 3)
'la cellule = 401000
ActiveCell.Value = "401000"
Range("G" & ilign).Activate
ActiveCell.Value = Gtiers
Case "411"
'si deux = 411
Gtiers = Mid(un, 4, trois - 3)
'la cellule = 411000
ActiveCell.Value = "411000"
Range("G" & ilign).Activate
ActiveCell.Value = Gtiers
End Select
' si en colonne j tu as la valeur $ alors on écrit USD
Monnaie = Cells(ilign, 10).Value
If Monnaie = "$" Then
ActiveCell.Value = "USD"
End If
' la colonne k a pour format décimal avec 6 chiffres derrière la virgule
Range("K" & ilign).Activate
ActiveCell.Value = Val(ActiveCell.Value)
ActiveCell.NumberFormat = "0.000000"
' la colonne l a pour format décimal avec 2 chiffres derrière la virgule
Range("L" & ilign).Activate
ActiveCell.NumberFormat = "0.00"
ActiveCell.Value = Val(ActiveCell.Value)
' la colonne M a pour format décimal avec 2 chiffres derrière la virgule
Range("M" & ilign).Activate
ActiveCell.NumberFormat = "0.00"
ActiveCell.Value = Val(ActiveCell.Value)
'la colonne N a pour valeur G
Cells(ilign, 14) = "G"
'si le nombre de caractères de la colonna A = 1 alors la colonne A = 0 + valeur de la cellule
If Len(Cells(ilign, 1)) = 1 Then
trs = Cells(ilign, 1).Value
ActiveCell.Value = "0" & trs
End If
Next ilign
'un petit bip sonore
Beep
'on zomme à 100%
ActiveWindow.Zoom = 100
'on sélectionnes la cellule A1
Range("A1").Select
'on dit que la macro est terminée
Msg = MsgBox("Travail terminé", vbInformation + vbOKOnly, "Macro Ecritures Comptables")
Exit Sub
MesErreurs:
' ce message apparaît s'il y a des problèmes
Msg = MsgBox("Erreur d'exécution " & Err.Number & vbCrLf & vbCrLf & Err.Description, vbCritical + vbOKOnly, "Macro Ecritures Comptables")
End Sub
End Sub
tu n'as pas du recopier le bon code parce que cette ligne n'y est plus.
En gros, efface tout ton code et mets uniquement celui-ci.
On Error GoTo MesErreurs
Workbooks.OpenText Filename:="H:\ecriture.txt", Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 4), _
Array(3, 1), Array(4, 2), Array(5, 2), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 4), _
Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15, 1), Array( _
16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), Array(21, 1), Array(22, 1)) _
, TrailingMinusNumbers:=True
ActiveWindow.Zoom = 10
'on sélectionne la colonne B et I et on les mets au format jjmmmaa
Columns("B:B").Select
Selection.NumberFormat = "ddmmyy"
Columns("I:I").Select
Selection.NumberFormat = "ddmmyy"
' On compte le nombre de lignes du tableau et on le met dans la variable NBRLIGN
With ActiveSheet
.Activate
.Range("D" & .Range("D65536").End(xlUp)(1).Row).Select
End With
nbrlign = (ActiveSheet.Range("D65536").End(xlUp)(1).Row)
'on sélectionne la colonne A et G et on la emt au format d'une adresse mail
Columns("G:G").Select
Selection.NumberFormat = "@"
Columns("A:A").Select
Selection.NumberFormat = "@"
For ilign = 1 To nbrlign
'on va sélectionner la colonne C pour chacune des lignes
Range("C" & ilign).Activate
'la variable un est égale à la valeur de la cellule
un = ActiveCell.Value
'la variable deux est égale aux 3 premiers caractères à gauche de la cellule
deux = Left(ActiveCell.Value, 3)
'trois est égal au nombre de caractère de la cellule
trois = Len(ActiveCell.Value)
Select Case deux
'si deux = 401
Case "401"
Gtiers = Mid(un, 4, trois - 3)
'la cellule = 401000
ActiveCell.Value = "401000"
Range("G" & ilign).Activate
ActiveCell.Value = Gtiers
Case "411"
'si deux = 411
Gtiers = Mid(un, 4, trois - 3)
'la cellule = 411000
ActiveCell.Value = "411000"
Range("G" & ilign).Activate
ActiveCell.Value = Gtiers
End Select
' si en colonne j tu as la valeur $ alors on écrit USD
Monnaie = Cells(ilign, 10).Value
If Monnaie = "$" Then
ActiveCell.Value = "USD"
End If
' la colonne k a pour format décimal avec 6 chiffres derrière la virgule
Range("K" & ilign).Activate
ActiveCell.Value = Val(ActiveCell.Value)
ActiveCell.NumberFormat = "0.000000"
' la colonne l a pour format décimal avec 2 chiffres derrière la virgule
Range("L" & ilign).Activate
ActiveCell.NumberFormat = "0.00"
ActiveCell.Value = Val(ActiveCell.Value)
' la colonne M a pour format décimal avec 2 chiffres derrière la virgule
Range("M" & ilign).Activate
ActiveCell.NumberFormat = "0.00"
ActiveCell.Value = Val(ActiveCell.Value)
'la colonne N a pour valeur G
Cells(ilign, 14) = "G"
'si le nombre de caractères de la colonna A = 1 alors la colonne A = 0 + valeur de la cellule
If Len(Cells(ilign, 1)) = 1 Then
trs = Cells(ilign, 1).Value
ActiveCell.Value = "0" & trs
End If
Next ilign
'un petit bip sonore
Beep
'on zomme à 100%
ActiveWindow.Zoom = 100
'on sélectionnes la cellule A1
Range("A1").Select
'on dit que la macro est terminée
Msg = MsgBox("Travail terminé", vbInformation + vbOKOnly, "Macro Ecritures Comptables")
Exit Sub
MesErreurs:
' ce message apparaît s'il y a des problèmes
Msg = MsgBox("Erreur d'exécution " & Err.Number & vbCrLf & vbCrLf & Err.Description, vbCritical + vbOKOnly, "Macro Ecritures Comptables")
End Sub
End Sub
ActiveCell.Value = Val(ActiveCell.Value) ==> transforme les données de ta colonne en valeur chiffrées
ActiveCell.NumberFormat = "0.00" ==> transforme tes chiffres en format 0.00
en quel format, tu veux qu'il soit??
essaie ca pour voir :
On Error GoTo MesErreurs
Workbooks.OpenText Filename:="H:\ecriture.txt", Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 4), _
Array(3, 1), Array(4, 2), Array(5, 2), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 4), _
Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15, 1), Array( _
16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), Array(21, 1), Array(22, 1)) _
, TrailingMinusNumbers:=True
ActiveWindow.Zoom = 10
'on sélectionne la colonne B et I et on les mets au format jjmmmaa
Columns("B:B").Select
Selection.NumberFormat = "ddmmyy"
Columns("I:I").Select
Selection.NumberFormat = "ddmmyy"
' On compte le nombre de lignes du tableau et on le met dans la variable NBRLIGN
With ActiveSheet
.Activate
.Range("D" & .Range("D65536").End(xlUp)(1).Row).Select
End With
nbrlign = (ActiveSheet.Range("D65536").End(xlUp)(1).Row)
'on sélectionne la colonne A et G et on la emt au format d'une adresse mail
Columns("G:G").Select
Selection.NumberFormat = "@"
Columns("A:A").Select
Selection.NumberFormat = "@"
For ilign = 1 To nbrlign
'on va sélectionner la colonne C pour chacune des lignes
Range("C" & ilign).Activate
'la variable un est égale à la valeur de la cellule
un = ActiveCell.Value
'la variable deux est égale aux 3 premiers caractères à gauche de la cellule
deux = Left(ActiveCell.Value, 3)
'trois est égal au nombre de caractère de la cellule
trois = Len(ActiveCell.Value)
Select Case deux
'si deux = 401
Case "401"
Gtiers = Mid(un, 4, trois - 3)
'la cellule = 401000
ActiveCell.Value = "401000"
Range("G" & ilign).Activate
ActiveCell.Value = Gtiers
Case "411"
'si deux = 411
Gtiers = Mid(un, 4, trois - 3)
'la cellule = 411000
ActiveCell.Value = "411000"
Range("G" & ilign).Activate
ActiveCell.Value = Gtiers
End Select
' si en colonne j tu as la valeur $ alors on écrit USD
Monnaie = Cells(ilign, 10).Value
If Monnaie = "$" Then
ActiveCell.Value = "USD"
End If
' la colonne k a pour format décimal avec 6 chiffres derrière la virgule
Range("K" & ilign).Activate
ActiveCell.Value = Val(ActiveCell.Value)
ActiveCell.NumberFormat = "0.000000"
' la colonne l a pour format décimal avec 2 chiffres derrière la virgule
Range("L" & ilign).Activate
ActiveCell.NumberFormat = "0.00"
ActiveCell.Value = Val(ActiveCell.Value)
' la colonne M a pour format décimal avec 2 chiffres derrière la virgule
Range("M" & ilign).Activate
ActiveCell.NumberFormat = "0.00"
ActiveCell.Value = Val(ActiveCell.Value)
'la colonne N a pour valeur G
Cells(ilign, 14) = "G"
'si le nombre de caractères de la colonna A = 1 alors la colonne A = 0 + valeur de la cellule
If Len(Cells(ilign, 1)) = 1 Then
trs = Cells(ilign, 1).Value
ActiveCell.Value = "0" & trs
End If
'on sélectionnes la colonne N et on rajoute une colonne
Range("N1").Select
Selection.EntireColumn.Insert
'si la colonne J <> eur
Range("J" & ilign).Activate
Select Case ActiveCell.Value
If Cells(ilign, 10) <> "EUR" Then
'la variable valdevise = colonne K
ValDevise = Cells(ilign, 11).Value
'si ta colonne L est supérieure à 0
If Cells(ilign, 12) > 0 Then
'la variable coll est égale à la valeur de ta cellule
coll = Cells(ilign, 12)
'la colonne l est égale à la conne L / taux de la colonne K
Cells(ilign, 12) = coll / ValDevise
'la colonne N est égale à la colonne L avant la division
Cells(ilign, 14) = coll
Else
' si la colonne L = 0
' colm = valeur de la colonne M
COLM = Cells(ilign, 13)
'la colonne M = M/ la taux de la colonne K
Cells(ilign, 13) = COLM / ValDevise
'la colonne N est égale à la colonne M avant la division
Cells(ilign, 14) = COLM
End If
End If
Next ilign
'un petit bip sonore
Beep
'on zomme à 100%
ActiveWindow.Zoom = 100
'on sélectionnes la cellule A1
Range("A1").Select
'on dit que la macro est terminée
Msg = MsgBox("Travail terminé", vbInformation + vbOKOnly, "Macro Ecritures Comptables")
Exit Sub
MesErreurs:
' ce message apparaît s'il y a des problèmes
Msg = MsgBox("Erreur d'exécution " & Err.Number & vbCrLf & vbCrLf & Err.Description, vbCritical + vbOKOnly, "Macro Ecritures Comptables")
End Sub
End Sub