VBA : perte de lignes lors de l'extraction à partir d'un fichier Excel

VBA : perte de lignes lors de l'extraction à partir d'un fichier Excel - Logiciels - Windows & Software

Marsh Posté le 07-06-2016 à 15:16:52    

Bonjour,
 
Je suis confrontée à un problème lors de l'extraction de lignes à partir d'un fichier Excel.
J'ai un fichier Excel composé de 4 colonnes intitulées xp, yp, xe, ye. Les données sont en mm, les x correspondent aux abscisses et les y aux ordonnées correspondantes. xp et yp ont N lignes et xe et ye ont M lignes.
Les valeurs initiales des x sont incrémentées de 0.01mm à chaque ligne.
Mon objectif est de récupérer les lignes tous les 0.1mm soit une valeur sur 10 à partir de la première.
 
Ma macro est la suivante :
 
Sub selection()
 
Dim i_ini As Integer
Dim j_ini As Integer
Dim m As Integer
Dim n As Integer
Dim i_calc As Integer
Dim j_calc As Integer
 
Dim pas_p As Double
 
Dim xp_ini As Double
Dim yp_ini As Double
Dim xe_ini As Double
Dim ye_ini As Double
 
 
Dim Val_ini As Worksheet
Dim Val_calc As Worksheet
 
 
Set Val_ini = Worksheets("Valeurs initiales" )
Set Val_calc = Worksheets("Valeurs pour calcul" )
 
'Données
i_calc = 2
j_calc = 2
 
pas_p = 0.1 'mm
xp_ini = 6.8 'mm
yp_ini = 2.0000659 'mm
 
pas_e = 0.1 'mm
xe_ini = 26.81 'mm
ye_ini = 20.542061 'mm
 
 
For i_ini = 2 To 6505 'numéro de la ligne
     
    For m = 0 To 650 'incrément
        xp_m = xp_ini + m * pas_p
        If Val_ini.Cells(i_ini, 1).Value = xp_m Then
         
            Val_ini.Cells(i_ini, 1).Copy Val_calc.Cells(i_calc, 1) 'récupération des xp
            Val_ini.Cells(i_ini, 2).Copy Val_calc.Cells(i_calc, 2) 'récupération des yp
            i_calc = i_calc + 1
             
        End If
         
         
    Next
         
Next
 
For j_ini = 2 To 4418
             
    For n = 0 To 441 'incrément
             
        If Val_ini.Cells(j_ini, 3).Value = (xe_ini + n * pas_e) Then
             
            Val_ini.Cells(j_ini, 3).Copy Val_calc.Cells(j_calc, 3) 'récupération des xe
            Val_ini.Cells(j_ini, 4).Copy Val_calc.Cells(j_calc, 4) 'récupération des ye
            j_calc = j_calc + 1
             
        End If
    Next
     
Next
 
 
End Sub

 
Le code me ressort des données cohérentes cependant ils y a des "sauts" dans les données extraites, des lignes manquantes. Par exemple, les lignes extraites sont :
xp
8
8.1
8.2
8.3
8.5
8.6
8.8
9
Il manque les lignes 8.4, 8.7, 8.9.
(j'ai le même problème avec les xe)
et ceci se produit de manière irrégulière, je ne comprends pas pourquoi.
Auriez-vous une idée de l'origine du problème?
 
Merci  :)

Reply

Marsh Posté le 07-06-2016 à 15:16:52   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed