Bonjour,
J'ai un soucis avec une macro que j'ai codé pour l'entreprise dans laquelle je suis. Globalement l'étape qui pose problème dans mon script est le tri des lignes du tableur.
Pour vous expliquer mes données, j'ai plusieurs lignes qui correspondent à des patients. Sur chaque lignes il y a plusieurs champs qui contiennent des codes de la forme "26:01" ou "42:01/42:02" ou "15:02/15:04/15:06" ...etc. Soit deux nombres séparés par ":" et parfois plusieurs codes séparés par "/" dans la même cellule.
La partie de traitement des données est éprouvée et fiable mais le soucis viens du fait que cette macro est disponible sur différents ordinateurs ne comportant pas tous la même version d'Excel (2010 et 2013).
Sur certains ordinateurs dont la version est 2010, il arrive occasionnellement que lors de cette phase de tri, certains codes soient modifiés comme ceci, "42:01/42:03" devient "42:01/42:42" ; "15:02/15:04/15:06" devient "15:02/15:15" ; "12:01/12:05/12:06/12:25" devient "12:01/12:12"...
Comme vous voyez les codes sont ramenés à deux même s'il y en avait plus et le dernier numéro est toujours le même que le premier.
Pour informations les cellules sont toutes au format Texte pour justement ne pas êtres assimilées a un date ou autre. Le bug concerne uniquement ces codes et non les autres données plus classiques (entiers, chaines) et uniquement les cellules comportant plusieurs codes (donc séparés par "/").
Ce bug n'apparait jamais (jusqu’à maintenant en tout cas) sur la version 2013.
Je suppose donc qu'Excel 2010 subit un bug dans le tri des données à cause du schéma un peu particulier de ces codes.
Voici mon script pour le tri :
Présentation du problème
Alors si quelqu'un a une idée sur l'origine du problème ou souhaite plus d'information merci d'avance
J'ai un soucis avec une macro que j'ai codé pour l'entreprise dans laquelle je suis. Globalement l'étape qui pose problème dans mon script est le tri des lignes du tableur.
Pour vous expliquer mes données, j'ai plusieurs lignes qui correspondent à des patients. Sur chaque lignes il y a plusieurs champs qui contiennent des codes de la forme "26:01" ou "42:01/42:02" ou "15:02/15:04/15:06" ...etc. Soit deux nombres séparés par ":" et parfois plusieurs codes séparés par "/" dans la même cellule.
La partie de traitement des données est éprouvée et fiable mais le soucis viens du fait que cette macro est disponible sur différents ordinateurs ne comportant pas tous la même version d'Excel (2010 et 2013).
Sur certains ordinateurs dont la version est 2010, il arrive occasionnellement que lors de cette phase de tri, certains codes soient modifiés comme ceci, "42:01/42:03" devient "42:01/42:42" ; "15:02/15:04/15:06" devient "15:02/15:15" ; "12:01/12:05/12:06/12:25" devient "12:01/12:12"...
Comme vous voyez les codes sont ramenés à deux même s'il y en avait plus et le dernier numéro est toujours le même que le premier.
Pour informations les cellules sont toutes au format Texte pour justement ne pas êtres assimilées a un date ou autre. Le bug concerne uniquement ces codes et non les autres données plus classiques (entiers, chaines) et uniquement les cellules comportant plusieurs codes (donc séparés par "/").
Ce bug n'apparait jamais (jusqu’à maintenant en tout cas) sur la version 2013.
Je suppose donc qu'Excel 2010 subit un bug dans le tri des données à cause du schéma un peu particulier de ces codes.
Voici mon script pour le tri :
VB:
ActiveSheet.Sort.SortFields.Clear
ActiveSheet.Sort.SortFields.Add Key:=Columns(lastCol - 2) , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
ActiveSheet.Sort.SortFields.Add Key:=Columns(lastCol - 1) , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
ActiveSheet.Sort.SortFields.Add Key:=Columns(lastCol) , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveSheet.Sort
.SetRange Range(Cells(cellEntete.row, 1), Cells(lastrow, lastCol + 3).Address)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Présentation du problème
- Avant le tri
position | code 1 | code 2 | code 3 | code 4 | code 5 | code 6 | code 7 | code 8 | code 9 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
18 |
|
|
|
|
|
|
|
|
|
- Après le tri
position | code 1 | code 2 | code 3 | code 4 | code 5 | code 6 | code 7 | code 8 | code 9 |
---|---|---|---|---|---|---|---|---|---|
1 | 26:01/26:26 | 29:01/29:29 | 35:01/35:35 | 38:01/38:38 | 04:01/04:04 | 12:03/12:12 | 04:04/04:04 | 13:01/13:13 | 03:02/03:03 |
Alors si quelqu'un a une idée sur l'origine du problème ou souhaite plus d'information merci d'avance