Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Cette macro fonctionne très bien, mais je souhaite mais je voudrais que la conversation se fasse que sur les colonne B,C,D sur une feuil1
Avez vous une idée ? Merci
Sub ConversionNumerique()
ActiveSheet.UsedRange.Select
For Each cell In Selection
If Left(CStr(cell.Formula), 1) <> "=" Then
On Error Resume Next
cell.Value = CDbl(cell) 'S'il n'y a que des entiers on peut mettre Clng(cell)
If cell = 0 Then cell.ClearContents
cell.NumberFormat = "General"
End If
Next
End Sub
Sub ConversionNumerique()
On Error Resume Next
For Each cell In Sheet("Feuil1").Range("B1:D" & _
Sheet("Feuil1").Range("A1").SpecialCells(xlCellTypeLastCell).Row)
If Left(cell.Formula, 1) <> "=" Then
cell = CDbl(cell) 'S'il n'y a que des entiers on peut mettre Clng(cell)
If cell = 0 Then cell.ClearContents
cell.NumberFormat = "General"
End If
Next
End Sub
Je n'aime pas utiliser "On Error Resume Next", mais le mettre dans une boucle ne sert à rien => il faut réaffecter On error pour que le Resume Next s'arrête
A+
Désolé du retard, je viens d'apter ta macro mais cela ne fonctionne pas.
Entre temps, j'ai modifié ma demande. Je souhaite appliquer ma convertion essentiellement sur la dernière ligne saisie dan la colonne B,C,D en feuil1
Merci
A+
Sub ConversionNumerique()
Set F1 = Worksheets("Feuil1")
FinA = F1.Range("B65536").End(xlUp).Row
For Each cell In F1.Range(F1.Cells(FinA, 2), F1.Cells(FinA, 4))
If Left(CStr(cell.Formula), 1) <> "=" Then
On Error Resume Next
cell.Value = CDbl(cell) 'S'il n'y a que des entiers on peut mettre Clng(cell)
If cell = 0 Then cell.ClearContents
cell.NumberFormat = "General"
End If
Next
Set F1 = Nothing
FinA = Empty
End Sub
Salut BRUNO62, laurent950 et le forum
Comme le client est satisfait...
Juste quelques remarques anodines (j'aime bien critiquer )
l'utilisation des balises pour le code (icone #) permet une meilleure lecture de celui-ci.
Je n'ai pas vérifié le code fournit précédemment. J'aurais vu qu'en tapant le code directement j'avais mis "Sheet("Feuil1")" à la place de "Sheets("Feuil1")". Mais ça sert à quoi d'être bête si je ne le montre pas
Cependant "je viens d'apter ta macro mais cela ne fonctionne pas" ne permet pas un dépannage efficace. Comme je ne sais pas à quoi sert cette macro et qu'elle ne me semble pas avoir un fonctionnement très utile (supprimer les 0 si on les rentre, pas s'ils sont calculés), difficile de porter un jugement sur le fonctionnement. De plus chez moi, il faut obligatoirement déclarer les variables et "resume next" me donne des boutons
Sur la macro de laurent950
Code:
Sub ConversionNumerique()
Set F1 = Worksheets("Feuil1")
FinA = F1.Range("B65536").End(xlUp).Row
For Each cell In F1.Range(F1.Cells(FinA, 2), F1.Cells(FinA, 4))
Si les cellules sont vides en B, quelque soit la longueur des colonnes C et D, on n'aura aucune conversion plus loin que la dernière non vide en B. Sans compter que la macro garde les limitations de 2003 (65536 lignes) alors qu'elle risque de passer, un jour sur une version plus évoluée qui autorise plus de lignes (et de colonnes).
Utiliser 2 variables pour des valeurs figées ne me semble pas très utile.
If Left(CStr(cell.Formula), 1) <> "=" Then => étant assez obtus, je ne vois pas le besoin de convertir la formule d'une cellule en texte pour la tester. Quelle différence cela fait-il avec If Left(cell.Formula, 1) <> "=" Then ?
On Error Resume Next => comme je l'ai dit, ça me donne des boutons : impossible de détecter toute anomalie dans le code tant qu'on n'aura pas utilisé "On Error Goto ...". Et, bien qu'Excel ne fasse pas toujours ce qu'on pense lui dire, le mettre dans une boucle ne sert pas à grand chose.
Code:
Set F1 = Nothing
FinA = Empty
Excel le fait automatiquement à la fin de la macro, donc, pourquoi se fatiguer !
A+
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.