Convertir les nombres stockés en tant que texte en nombres

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 !

arnaudbu

XLDnaute Occasionnel
Bonjour,

J'exporte depuis le logiciel SAP des données directement sous forme de feuille excel.

Par contre dans toutes les cellules possedant des nombres j'ai une erreur (coin vert): "le nombre dans cette cellule est au format texte ou précédé d'une apostrophe"

Ceci bloque mes formules car elle ne lise pas le nombre. Connaissez vous ce problème ? Comment à l'aide du macro, traiter l'ensemble des colonnes A, B, C et G ?

Merci à vous
 
Re : Convertir les nombres stockés en tant que texte en nombres

Bonsoir Arnaudbu
essayes comme cela
a+
papou

Code:
Option Explicit

Const CheminBDD As String = "C:\ESSAI\Bdd_SAP.xls" 

Sub ImportSAP()

'On Error Resume Next

Dim fin As Integer, i, ws As Worksheet

Workbooks.Open CheminBDD

    With ActiveWorkbook
        
            For Each ws In Worksheets
    
    fin = .Range("A65536").End(xlUp).Row
    
    For i = 2 To fin
        .Cells(i, 1) = .Cells(i, 1) * 1
        .Cells(i, 2) = .Cells(i, 2) * 1
        .Cells(i, 3) = .Cells(i, 3) * 1
        .Cells(i, 7) = .Cells(i, 7) * 1
    Next i

   . Range(Range("A1"), .Range("J65536").End(xlUp).Offset(0, 1)).NumberFormat = "General"
        
            Next ws
          
    .Close True
    
    End With
    
End Sub
[/QUOTE]
 
Re : Convertir les nombres stockés en tant que texte en nombres

Non cela ne fonctionne pas. Il reste en erreur sur .Range alors j'ai rajouté ws et la ça passe, puis il bloque sur les .Cells

Code:
Sub ImportSAP()

On Error Resume Next

Dim fin As Integer, i, ws As Worksheet

Workbooks.Open CheminBDD

    With ActiveWorkbook
        
            For Each ws In Worksheets
    
    [COLOR="Red"]fin = .Range("A65536").End(xlUp).Row[/COLOR]
    
    For i = 2 To fin
        .Cells(i, 1) = .Cells(i, 1) * 1
        [COLOR="Red"].Cells(i, 2) = .Cells(i, 2) * 1[/COLOR]
        .Cells(i, 3) = .Cells(i, 3) * 1
        .Cells(i, 7) = .Cells(i, 7) * 1
    Next i

   .Range(Range("A1"), .Range("J65536").End(xlUp).Offset(0, 1)).NumberFormat = "General"
        
            Next ws
          
    .Close True
    
    End With
    
End Sub
 
Re : Convertir les nombres stockés en tant que texte en nombres

Bonjour à tous,

pas tout regardé, mais modifie peut être cette partie :

Code:
With ActiveWorkbook
    For Each ws In [COLOR="red"][B].[/B][/COLOR]Worksheets
        fin = [COLOR="Red"][B]ws[/B][/COLOR].Range("A65536").End(xlUp).Row

@+
 
Re : Convertir les nombres stockés en tant que texte en nombres

Merci mais non, il reste toujours bloqué sur:
Code:
For i = 2 To fin
        [COLOR="Red"].Cells(i, 1) = .Cells(i, 1) * 1[/COLOR]
        .Cells(i, 2) = .Cells(i, 2) * 1
        .Cells(i, 3) = .Cells(i, 3) * 1
        .Cells(i, 7) = .Cells(i, 7) * 1
    Next i

J'ai déjà joint un fichier sur un page précédente.
 
Re : Convertir les nombres stockés en tant que texte en nombres

Re,

normal tu es dans le bloc "with ActiveWorkbook", essaye ainsi :

Code:
With ActiveWorkbook
    For Each ws In .Worksheets
        fin = ws.Range("A65536").End(xlUp).Row
            With ws
                For i = 2 To fin
                    .Cells(i, 1) = .Cells(i, 1) * 1

@+
 
Re : Convertir les nombres stockés en tant que texte en nombres

Ok et merci. Maintenant j'ai incompatibilité de type sur:

Code:
Sub ImportSAP()

'On Error Resume Next

Dim fin As Integer, i, ws As Worksheet

Workbooks.Open CheminBDD

    With ActiveWorkbook
    
        For Each ws In .Worksheets
    
            fin = ws.Range("A65536").End(xlUp).Row
                  
                With ws
                            
                    .Range(Range("A1"), .Range("J65536").End(xlUp).Offset(0, 1)).NumberFormat = "General"
                            
                    For i = 2 To fin
                     'On Error Resume Next
                     .Cells(i, 1) = .Cells(i, 1) * 1
                     .Cells(i, 2) = .Cells(i, 2) * 1
                     [COLOR="Red"].Cells(i, 3) = .Cells(i, 3) * 1[/COLOR]
                     .Cells(i, 7) = .Cells(i, 7) * 1
                    Next i
                        
                End With
                
            Next ws
          
    .Close True
    
    End With
    
End Sub
 
Re : Convertir les nombres stockés en tant que texte en nombres

Hello,

Cette nuit j'ai refait des extractions de mes données et relancé la macro. Les valeurs se sont bien convertis. Il y a juste la ligne ci-dessous qui ne passe pas. Effectivement, dans le format des cellules, elles restent toujours en texte au lieu de "Standard":

Code:
.Range(Range("A1"), .Range("J65536").End(xlUp).Offset(0, 1)).NumberFormat = "General"
 
Re : Convertir les nombres stockés en tant que texte en nombres

Bonjour Arnaud,

peut être en rajoutant un point :

Code:
.Range([COLOR="Red"][B].[/B][/COLOR]Range("A1"), .Range("J65536").End(xlUp).Offset(0, 1)).NumberFormat = "General"

bon après midi
@+
 
Re : Convertir les nombres stockés en tant que texte en nombres

En fait non ça ne va pas. Le formatage des cellules et la protection des feuilles ne fonctionne pas.

Code:
Sub FormatDonneesSAP()

Dim fin As Integer, i, ws As Worksheet

Workbooks.Open CheminBDD
With ActiveWorkbook

For Each ws In .Worksheets

'Sub
UnProtect
    
fin = ws.Range("A65536").End(xlUp).Row
                  
With ws

.Range(.Range("A2"), .Range("J65536").End(xlUp).Offset(0, 1)).NumberFormat = "General"

For i = 2 To fin
                    
On Error Resume Next
.Cells(i, 1) = .Cells(i, 1) * 1
.Cells(i, 2) = .Cells(i, 2) * 1
.Cells(i, 3) = .Cells(i, 3) * 1
.Cells(i, 7) = .Cells(i, 7) * 1
Next i
                    
End With
                    
'Sub
Protect

Next ws
       
.Close True
       
End With
    
End Sub
 
Re : Convertir les nombres stockés en tant que texte en nombres

Bonjour Pierrot Arnaud le forum
déjà avec un point là c'est pas bon je pense !!!
pour le reste si tu disais ou cela coince?
a+
papou 🙂
Code:
For Each ws In [SIZE=6][COLOR=Red].[/COLOR][/SIZE]Worksheets
ws.unprotect
le Unprotect aussi ou tu le met dans le with avec un point .unprotect ou tu mets ws.unprotect et le protect pareil
 
Dernière édition:
Re : Convertir les nombres stockés en tant que texte en nombres

Re tous,
voilà ce que moi j'essaierais
a+
Papou 🙂

Code:
For Each ws In Worksheets
                  
With ws
.unprotect
.Range(.Range("A2"), .Range("J65536").End(xlUp).Offset(0, 1)).NumberFormat = "General"
fin = ws.Range("A65536").End(xlUp).Row
For i = 2 To fin
                    
On Error Resume Next
.Cells(i, 1) = .Cells(i, 1) * 1
.Cells(i, 2) = .Cells(i, 2) * 1
.Cells(i, 3) = .Cells(i, 3) * 1
.Cells(i, 7) = .Cells(i, 7) * 1
Next i
.protect                    
End With 
Next ws
 
Dernière édition:
- 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
11
Affichages
1 K
J
Réponses
4
Affichages
887
J
Réponses
13
Affichages
3 K
Retour