J'ai un fichier avec 5 colonnes : (REFF_ID ORIG_FID Y_coord X_coord code) et 537549 lignes!
"code" a des valeurs egales a 0 ou 1 (voir fichier joint qui correspond aux 856 premieres lignes de mon fichier).
Ce que je souhaiterai c'est inserer une ligne lorsque code = 1 (i.e. inserer une ligne au dessus du 1). Si possible, je voudrais ensuite remplir les nouvelle ligne vides/inserees avec des NaN.
J'ai fouille sur le forum et essaye d'adapte des programmes en VBA pour deja inserer les lignes mais je suis debutante et cela ne marche pas!
Voila mon code:
Code:
Sub insert_ligne()
Dim i As Integer
Application.ScreenUpdating = False
For i = 1 To 537549
If (Cells(i, 7) = 1) Then
Cells(i, 1).Select
EntireRow.Insert
i = i + 1
End If
Next
Application.ScreenUpdating = True
End Sub
Re : inserer des lignes sous condition + NaN dans un fichier comportant 537549 lignes
Bonjour KrokroExcel,
Peut-être avec ce code dans le module de ta feuille :
Code:
Sub Supprlign()
Application.ScreenUpdating = False
Dim i As Long
For i = 1 To Range("E65536").End(xlUp).Row
If Range("E" & i).Value = 1 Then
Rows(i + 1).Insert Shift:=xlDown
Range("A" & i + 1 & ":E" & i + 1).Value = "NaN"
End If
Next i
Application.ScreenUpdating = True
End Sub
Par contre je n'ai pas compris le "NaN", c'est une référence relative où c'est juste une valeur brute à rentrer dans la ligne ajoutée?
Re : inserer des lignes sous condition + NaN dans un fichier comportant 537549 lignes
Bonjour Krokro
A tester:
Code:
Sub test()
Dim i As Integer
Application.ScreenUpdating = False
For i = 1 To 537549
If Cells(i, 5) = 1 Then
Rows(i).EntireRow.Insert
Range("E" & i) = "NaN"
i = i + 1
End If
Next
Application.ScreenUpdating = True
End Sub
Re : inserer des lignes sous condition + NaN dans un fichier comportant 537549 lignes
Bonjour VDAVID et Pierre-Jean et merci beaucoup pour votre aide.
En mixant vos 2 programmes j'obtient ce que je souhaite - i.e l'insertion de la ligne au dessus du "1" + le remplissage des nouvelles lignes avec des NaN:
Code:
Sub test()
Dim i As Integer
Application.ScreenUpdating = False
For i = 1 To 1000
If Cells(i, 5) = 1 Then
Rows(i).EntireRow.Insert
Range("A" & i & ":E" & i).Value = "NaN"
i = i + 1
End If
Next
Application.ScreenUpdating = True
End Sub
J'ai cependant teste sur un petit echantillonage de mon fichier (1000 lignes) ... reste a voir si mon ordi tient le coup en lancant le programme sur les 537549 lignes! Je vais tester ca maintenant et vous tient au courant!
Re : inserer des lignes sous condition + NaN dans un fichier comportant 537549 lignes
Rebonjour.
Donc effectivement il faut mettre Dim i as Long sinon vba bug.
Avec Dim i as Long le programme demarre mais en essayant de faire les 537 549 lignes d'un coup, cette fois ci c'est mon ordi qui a plante! Donc j'ai lance le programme 100000 lignes par 100000 lignes et j'obtient exactement ce que je voulais!
Merci beaucoup a tous les 2 vous venez de me sauvez une longue journee a faire des insertion de lignes et des copier-coller!
Cordialement
Krokro