Bonjour à toutes et à tous,
le titre est pas super explicite, j'ai pas trouvé de façon d'expliquer brièvement ce que je voulais... Pour les courageux qui sont là je détaille donc !
J'ai actuellement un code qui transpose des valeurs d'une feuille à une autre.
Sauf qu'Excel me fait n'importe quoi... Enfin pas tout à fait mais...
Il me copie les valeurs en tant que Chaînes de caractères et ce quelque soit le format d'origine ou de destination.
Par exemple 41,7 sera retranscris 41,7 dans ma colonne destination de type Number(2) mais ce n'est pas un chiffre ! Si j'édite la valeur sans rien modifier et que je valide avec entrée j'obtiens alors 41,70 qui lui est bien un chiffre...
Et c'est ce fonctionnement manuel que je n'ai pas réussi jusqu'à maintenant à reproduire convenablement. J'ai bien tenté l'enregistrement d'une macro du procédé mais elle ne fait absolument rien.
J'ai alors joué du format à la mano :
Sauf que cellule par cellule c'est... Une horreur ! Sur 400 lignes j'ai le temps d'aller prendre au moins deux cafés, bref ce n'est pas viable. (Et encore je ne travaille que sur les lignes ajoutées et non pas tout le classeur, j'ai donc limité la casse...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Dim cell As Range For Each cell In Range("Q" + CStr(conf.lastRowOfData) + ":W" + CStr(conf.lastRowOfData + (endCell - 7) - 1)) cell.FormulaR1C1 = CDec(cell.Value) Next cell
Pour information voilà ce que j'utilise pour la copie si un début de piste peut être pris par là :
Quelqu'un aurait-il une piste à me proposer pour améliorer cela ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Worksheets(conf.tmpSheet).Range("A7", "Z" + CStr(endCell - 1)).copy Worksheets(conf.finalBenchSheet).Activate Range(lib.toLetter(firstCellOfData.column) _ + CStr(conf.lastRowOfData), lib.toLetter(firstCellOfData.column + 25) _ + CStr(conf.lastRowOfData + (endCell - 7) - 1)).PasteSpecial xlValues![]()
Partager