Recherche d'un code VBA
Bonjour
J'ai un fichier qui comporte un jeux de donnèes de grande taille.
Il concerne des accidents de la route au cours de l'anné 2017.
je l'ai eu sur data.gouv.fr
J'ai deux colones differentes qui comportent les numéros d'accidents.
la première comprte tous les accident en FRANCE, tandis que la seconde ne concerne que la région ile de france.
Je voudrais juste les lignes ou les deux numéros de ses colones sont identiques et je voudrais supprimer le reste.
J'ai essayé ce code:
Sub carac()
Dim i As Long: Dim j As Long: Dim k As Long: Dim l As Long
Dim der_ligne As Long:
der_ligne = Cells.SpecialCells(xlCellTypeLastCell).Row
For i = 2 To der_ligne
For j = 1 To 12
For k = 13 To 28
For l = 2 To der_ligne
While i < der_ligne
While l < der_ligne
If (Cells(i, 1).Value <> Cells(l, 13).Value And Cells(i, j) <> "" And Cells(i, k) <> "") Then
Rows(i).Delete
End If
i = i + 1
l = l + 1
Wend
Wend
Next l
Next k
Next j
Next i
End Sub
En gros je veux conserver la première ligne celle avec mes variables.
Ensuite je voudrais supprimer une partie de toutes les lignes ou le numéro de la première colonne est different de celui de la 14ième
Cela fait des jous que j'essaie j'y arrive pas
SOS
PETITE RECTIFICATION
Ce n'ets pas la 14ième colone mais la 13ième
MERCI
Bonjour,
Pour une meilleurs compréhension (de notre part), il serait bon d'identer le code et le mettre entre balises "code"
Sans support pour concrétiser la structure des feuilles, pas facile d'apporter une réponse précise.
Pas sûr d'avoir tout saisi.
Pour supprimer des lignes il faut toujours partir de la dernière pour remonter vers la première; sinon il y aura un décalage dans les N° de ligne au fur et à mesure des suppressions.
'test des deux colonnes par exemple C et D
For i = der_ligne_C to 2 step -1
Trouve=False
For j = 2 to der_ligne_D
if Cells(i,"C").value= cells(j,"D").Value then
Trouve=True
exit for
end if
Next
If not Trouve then rows(i).delete ' si élément de C n'existe pas dans D , supprime ligne C
Next
Mais attention si les données à tester sont sur la même feuille la suppression de la ligne pour la colonne C entrainera la suppression également en colonne D (forcément !) Il vaudra mieux utiliser:
Range("C" & i).Delete Shift:=xlUp
Si les deux colonnes ne sont pas sur la même feuille, il faudra préciser les feuilles:
.../...
if worksheets("Feuil1").Cells(i,"C").value= worksheets("Feuil2").cells(j,"D").Value
.../...
A+