Modifier macro

BRUNO62

XLDnaute Occasionnel
Bonsoir,

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

Bonne soirée
A+
 

Gorfael

XLDnaute Barbatruc
Re : Modifier macro

Salut BRUNO62 et le forum
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
Et tu discute bien avec ? ;)
Code:
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+
 

BRUNO62

XLDnaute Occasionnel
Re : Modifier macro

Bonsoir Gorfael ,

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+
 

laurent950

XLDnaute Accro
Re : Modifier macro

Bonsoir BRUNO62 et Gorfael,

Peut être cette Macro :

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


Laurent
 
Dernière édition:

Gorfael

XLDnaute Barbatruc
Re : Modifier macro

Salut BRUNO62, laurent950 et le forum
Comme le client est satisfait...
Juste quelques remarques anodines (j'aime bien critiquer :p)

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 :cool:

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+
 
Dernière édition:

Discussions similaires

Réponses
21
Affichages
386
Réponses
1
Affichages
196
Réponses
2
Affichages
161

Statistiques des forums

Discussions
312 490
Messages
2 088 879
Membres
103 981
dernier inscrit
vinsalcatraz