XL 2016 RÉSOLU Convertir plage texte en nombre

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

@Staple1600 Non, C2 contient "0,321", format standard en effet.
@mapomme Oui, une fonction perso ce serait très facile à écrire, mais je n'en vois pas trop l'intérêt. Une formule qui multiplie par 1 convertit déjà le texte en nombre. Pierrejean l'a fait mais moi je n'aime pas écrire des codes qui parcourent une à une les cellules d'une plage.
 
Parce que la valeur de la cellule est effectivement un texte et non un nombre. Qu'est-ce que le format d'affichage de la cellule vient faire la dedans ? Il est presque complètement indépendant du type de donnée de sa valeur, sauf pour faire la distinction entre les dates, nombres et devises qui semblent bien en réalité tous stockés en Double. C'est une chose qu'on m'a fait comprendre assez récemment, et c'est en relation avec la propriété Value2, toujours expliquée de façon obscure par Microsoft.
 
Dernière édition:
Bonjour à toutes et tous.

Bien que le sujet soit ancien et marqué résolu, je me permets d'y ajouter ma contribution afin d'éviter à tout le monde de perdre du temps inutilement.

  1. Les boucles sont à proscrire dans la plupart des cas car beaucoup trop longues à s'exécuter (testez avec 1 million de lignes sur 5 colonnes et vous comprendrez)

  2. les traitements par plages sont tellement plus rapides que les boucles qu'on ne peut pas les comparer

  3. Lorsqu'on place une valeur dans la propriété Formula d'une plage, Excel en détermine automatiquement la nature.
La méthode la plus rapide et efficace consiste donc en :

VB:
Public Sub Reconvertir(ByVal Feuille as WorkSheet, _
                       ByVal Plage as Range)
    Dim shtFeuille as WorkSheet
    Dim rngPlage as Range
    
    set shtFeuille = Iif(Not Feuille is Nothing, Feuille, ActiveWorkbook.ActiveSheet)
    Set rngPlage = Iif(Not Plage is Nothing, Plage, shtFeuille.UsedRange)
    
    With rngPlage
        .Formula = .Value
    End With
End Sub

En espérant que ça pourra aider certains à progresser
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
99
Réponses
5
Affichages
222
Réponses
12
Affichages
165
Réponses
11
Affichages
576
Réponses
5
Affichages
142
Retour