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   -
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)

'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:

1 réponse

f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Bonjour,

Il faudrait aussi vos donnees !!!!!!

Au premier abord, Cell.Value et Cell.Text ne donnent pas forcement la meme chose
0
xxfahrenheitxx Messages postés 27 Date d'inscription   Statut Membre Dernière intervention   2
 
après vérification, Cell.text et Cell.value (ou même Cell tout simplement qui doit engendré l'utilisation d'un équivalent toString comme en Java) ressort les même résultat.

je veux bien vous faire parvenir les données y a-tîl possibilité d'ajouter des pièce jointes ? cordialement
Fahrenheit
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713 > xxfahrenheitxx Messages postés 27 Date d'inscription   Statut Membre Dernière intervention  
 
Re,


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+
0