Je me trouve face à un problème impossible à résoudre car je génère d'autres erreurs.
C'est surement du à des incompréhensions de ma part.
Contexte : utilisation d'un PC sous Windows 7 en FR + Office 2010 en Français
Objectif : transformer en chiffre la colonne A en macro VBA => remplacer sur toute la colonne des "." par ","
Lorsque j'effectue sans macro VBA en effectuant un rechercher / remplacer cela fonctionne.
Lorsque j'utilise le code VBA généré plusieurs soucis se posent.
Pour arriver définitivement à transformer les cellules en chiffre, j'utilise la macro "TestTransco" dans le fichier en PJ.
Cette macro effectue un remplacement ("Replace") puis un convertir ("TextToColumns").
J'utilise cette dernière ("TextToColumns") c'est pour être sur de réussir ma transformation en chiffre ("F2" + Entrée sur chaque cellule (édition de la cellule puis entrée)).
Le problème ne se situe pas sur TextToColumns (du moins je pense).
Les lignes à surveiller avant macro :
+ ligne 1929 à 4151 en bleu=> lignes à transformer en chiffre
+ ligne 4152 à 4160 en rouge => lignes transformés le chiffre est multiplié par 1 00 000 si le nombre est supérieure à 1 (alors que je n'ai rien demandé)
Pourriez-vous m'aider s'il vous plait ?
Merci d'avance de vos suggestions,
El Gringo 123456
Bonsoir.
Moi je ne me casserais pas la tête, je ferais :
VB:
Sub TestTransco()
Dim R As Range, T(), L&
Set R = ActiveSheet.UsedRange.Columns(1)
T = R.Value
For L = 2 To UBound(T, 1)
If VarType(T(L, 1)) = vbString Then T(L, 1) = CDbl(Replace(T(L, 1), ".", ","))
Next L
R.Value = T
End Sub
Objectif : transformer en chiffre la colonne A en macro VBA => remplacer sur toute la colonne des "." par ","
Lorsque j'effectue sans macro VBA en effectuant un rechercher / remplacer cela fonctionne.
Lorsque j'utilise le code VBA généré plusieurs soucis se posent.
Le problème ne se situe pas sur TextToColumns (du moins je pense).
je pense surtout qu'il est impossible te trouver une solution lorsque les données ont déjà été manipulées...
Fournit ici le fichier original tel que tu le reçois et avant ouverture par Excel
Une question pour @mapomme
Pourquoi tu choisis de passer par Intersect(Sheets("DATA").Columns(1), Sheets("DATA").UsedRange) ?
Selon les cas, on peut avoir des surprises, non?
VB:
Sub Tests()
Sheets.Add: [A1:A10] = Date: [C3:F30] = Time
MsgBox Intersect(Sheets(1).Columns(1), Sheets(1).UsedRange).Address
MsgBox Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp)).Address
End Sub
PS: Si je m'a trompé, c'est pas grave. Au moins ce sera été l'occasion de te saluer
Certes, il est vrai . Mais ici, c'était juste pour ne pas embarquer toute la colonne. Néanmoins ta remarque est sensée, pertinente et judicieuse. Je propose donc le code pointilliste suivant :
VB:
Sub ToNumber2()
With Sheets("DATA")
With .Cells(1, 1).Resize(.Cells(.Rows.Count, 1).End(xlUp).Row)
.Cells = .Value
.HorizontalAlignment = xlGeneral
End With
End With
End Sub
Alors du point, je vais vers la ligne...de front.
Au cas ou la bataille des valeurs concernerait toutes les feuilles du classeur
VB:
Private Sub ToNumber3(F As Worksheet)
If Not WorksheetFunction.CountA(F.Cells) = 0 Then
With F
With .[A1].Resize(.Cells(.Rows.Count, 1).End(3).Row)
.Cells = .Value: .HorizontalAlignment = 1
End With
End With
End If
End Sub
Sub ReunionDeCellules()
Dim s As Worksheet
Application.ScreenUpdating = False
For Each s In Worksheets
ToNumber3 s
Next
End Sub
PS: Les décors sont de Roger mapomme et les costumes de Staple Cardwell
"C'est ben vrai ça ! " comme disait Jeanne Marie Le Calvé
Ce à quoi répondait Marie-Pierre
"Et c'est tant mieux parce que je ferais pas ça tous les jours "
Je bois à leur santé avec mon verre de Tang
(en sortant de ma Fuego sur laquelle je venais de coller ma vignette)
Hello tout le monde,
Thanks a lot pour toutes vos réponses.
Je vais tout regarder calmement et exploiter un max toutes les solutions.
Pour donner le fichier source c'est impossible de mon côté car c'est un fichier professionnel qui est déjà un peu retraité.
Vraiment je vous remercie beaucoup de votre aide et lumières.
J'évolue en VBA et ce grace à vous.
Donc Bravo A TOUS