Excel VBA cell.value ne donne pas la bonne valeur
xxfahrenheitxx
Messages postés
27
Date d'inscription
Statut
Membre
Dernière intervention
-
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
dans un module VBA je parcours une feuille excel (worksheet) que nous appelleront "matrice" et le but est réécrire certaine données dans une seconde feuille nommée "DataTable". (mon but étant de passer d'une matrice à un tableau)
hors mon problème est qu'au sein d'une boucle, je parcours toute les ligne et toute les cell d'un range de ma matrice. lorsque je fait un debug.print j'ai les bonne valeure qui ressorte par contre lorsque j'écris cette même valeur dans la feuille DataTable, j'ai un résultat erroné. Toute les colonne du tableau comporte uniquement la dernière valeur de la matrice.
voici ma boucle (les positions d'écriture ligne+cell sont correcte dans la feuille dataTable seule les valeurs sont erronées)
D'avance merci pour l'aide que vous pourrez m'apporter car je suis largué je ne comprend pas pourquois ces valeurs sont différente, je vous met ci dessous la totalité de mon code si besoin.
Fahrenheit
dans un module VBA je parcours une feuille excel (worksheet) que nous appelleront "matrice" et le but est réécrire certaine données dans une seconde feuille nommée "DataTable". (mon but étant de passer d'une matrice à un tableau)
hors mon problème est qu'au sein d'une boucle, je parcours toute les ligne et toute les cell d'un range de ma matrice. lorsque je fait un debug.print j'ai les bonne valeure qui ressorte par contre lorsque j'écris cette même valeur dans la feuille DataTable, j'ai un résultat erroné. Toute les colonne du tableau comporte uniquement la dernière valeur de la matrice.
voici ma boucle (les positions d'écriture ligne+cell sont correcte dans la feuille dataTable seule les valeurs sont erronées)
'parcour de la matrice For Each row In rng_source.Rows 'permet de définir le bonne ligne dans la datatable dataTable_row = dataTable_row + 1 ' toute les cellules de la matrice For Each cell In rng_source.Cells 'le debug.pring ressort les bonnes données debug.print cell.Text 'ecrit dans le fichier dataTable ** mauvaise valeure ** WS_DataTable.Cells(dataTable_row, dataTable_cell) = cell.Text ' incrément et vérification pour définir la prochaine position dans la feuille datatable (fonctionne bien) dataTable_cell = dataTable_cell + 1 If dataTable_cell = 4 Then dataTable_cell = 1 End If Next cell Next row
D'avance merci pour l'aide que vous pourrez m'apporter car je suis largué je ne comprend pas pourquois ces valeurs sont différente, je vous met ci dessous la totalité de mon code si besoin.
Fahrenheit
Sub Main() 'Définition des variables Dim dataTable_row As Integer Dim dataTable_cell As Integer Dim WS_Matrice As Worksheet Dim WS_DataTable As Worksheet Dim rng_source As Range Dim rng_dest As Range Dim row As Range Dim cell As Range 'Set des variables Set WS_Matrice = Worksheets("Matrice") Set WS_DataTable = Worksheets("DataTable") Set rng_source = WS_Matrice.Range("E8:G55") Set rng_dest = WS_Matrice.Range("H5:BC7") dataTable_row = 2 dataTable_cell = 1 'Traitement For Each row In rng_source.Rows dataTable_row = dataTable_row + 1 For Each cell In rng_source.Cells Debug.Print cell.value 'ecrire dans le fichier datatable WS_DataTable.Cells(dataTable_row, dataTable_cell) = cell.Text dataTable_cell = dataTable_cell + 1 If dataTable_cell = 4 Then dataTable_cell = 1 End If Next cell Next row End Sub
A voir également:
- Vba set cell value
- Set-top box - Accueil - Box & Connexion Internet
- Starlink direct to cell prix - Accueil - Opérateurs & Forfaits
- Excel compter cellule couleur sans vba - Guide
- Find vba - Astuces et Solutions
- Time of day not set please run setup program ✓ - Forum Debian
je veux bien vous faire parvenir les données y a-tîl possibilité d'ajouter des pièce jointes ? cordialement
Fahrenheit
ressort les même résultat. Pas forcement, pour les nombres avec decimales, chez moi en debug.print .value=1,1 .text=1.1 pour 1.1 dans cellule lue et 1.1 dans cellule ecrite dans les deux cas
Pour transmettre un fichier,
il faut passer par un site de pièce jointe tel que cjoint.com
Allez sur ce site : https://www.cjoint.com/
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse...
A+