XL 2013 Transformer les données en VBA

FOUQUET Yves

XLDnaute Occasionnel
Bonjour,

Je travaille sur un vieux tableau EXCEL contenant une colonne E avec "l'année de cotisation".
Je veux trier la feuille en VBA par année de cotisation.
Pour cela dans le code, je transforme d'abord l'année en nombre puis je fais le trie et j'affiche.
Cela ne marche pas car toutes les données de la colonne E ne sont pas des nombres et malgré ma transformation, rien à faire!!

HELP
Merci de votre aide.

VB:
If UserForm53.le_choix = 3 Then
Application.DisplayAlerts = False
' --------- trier par COTISATION colonne E ----------
     With Sheets("Effectif")
     Columns("E:E").NumberFormat = "General"    'transforme la colonne en NOMBRE
     .[A:O].Sort .[E1], xlAscending, Header:=xlYes
     End With
Application.DisplayAlerts = True
    '---------------------------- affiche la liste triée
Set Ws = Sheets("Effectif")
With Sheets("Effectif")
    Set Rng = .Range("A2:O" & Ws.[B60000].End(xlUp).Row)
End With
ListBox1.ColumnCount = 13
ListBox1.ColumnWidths = "25;120;120;65;40;50;300;40;130;180;65;15;200;"
ListBox1.RowSource = Rng.Address(external:=True)

TextBox1 = Rng.Rows.Count
End If
 
Solution
Bonjour

si toutes les cellules concernées sont bien des expressions alphanumériques de numériques et ne contiennent aucun caractère autre que "0" à "9" :

VB:
With Columns("E:E").Cells
  .NumberFormat = "General"
  .Value = .Value
End With

eriiic

XLDnaute Barbatruc
Bonjour,

non, changer un format ne change que l'affichage des valeurs numériques.
En aucun cas ça ne change le contenu.

VB:
[zz1000000].Copy ' zz1000000 = cellule vide
Columns("E:E").PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd
eric
 

jmfmarques

XLDnaute Accro
Bonjour

si toutes les cellules concernées sont bien des expressions alphanumériques de numériques et ne contiennent aucun caractère autre que "0" à "9" :

VB:
With Columns("E:E").Cells
  .NumberFormat = "General"
  .Value = .Value
End With
 

FOUQUET Yves

XLDnaute Occasionnel
Merci beaucoup de vos réponses. J'ai testé avec les lignes de code de jmfmarques et cela a l'air de bien fonctionner.
Et si je veux appliquer une telle formule sur une colonne dates (K) qui ont été rentrées dans des formats soit TEXTE, soit DATE.. existe t-il une solution de ce type SVP
Quand directement dans la feuille je les passe en nombre certaines restent en date...

Le code ci dessous ne fonctionne pas...

VB:
If UserForm53.le_choix = 2 Then
' --------- trier par NAISSANCE colonne K ----------
Application.DisplayAlerts = False
With Sheets("Effectif")
Columns("K:K").NumberFormat = "General"    'transforme la colonne en NOMBRE
.[A:O].Sort .[K1], xlAscending, Header:=xlYes
End With
Application.DisplayAlerts = True
    '----------------------------
Set Ws = Sheets("Effectif")
With Sheets("Effectif")
Columns("K:K").NumberFormat = "dd/mm/yyyy"    'transforme la colonne en DATE jj/mm/aaaa
Set Rng = .Range("A2:O" & Ws.[B60000].End(xlUp).Row)
End With

ListBox1.ColumnCount = 13
ListBox1.ColumnWidths = "25;120;120;65;40;50;300;40;130;180;65;15;200;"
ListBox1.RowSource = Rng.Address(external:=True)

TextBox1 = Rng.Rows.Count
End If
 

Discussions similaires

Réponses
2
Affichages
99
Réponses
8
Affichages
620

Statistiques des forums

Discussions
311 725
Messages
2 081 943
Membres
101 849
dernier inscrit
florentMIG