Excel VBA cell.value ne donne pas la bonne valeur
xxfahrenheitxx
Messages postés
32
Statut
Membre
-
f894009 Messages postés 17414 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17414 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+