Landoltp
Messages postés68Date d'inscriptionmercredi 1 août 2007StatutMembreDernière intervention14 mars 2008
-
6 sept. 2007 à 19:44
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
7 sept. 2007 à 23:50
salut,
j'ai voudrais faire un programme qui me permette de supprimer les lignes dont la valeur de la cellule f serait inférieure à celle de la cellule a2 (en l'occurence ce sont des dates). pour l'instant j'ai fait ça, mais le problème c'est que ça me supprime tout le tableau (en plus je sais pas comment il faut faire pour définir que c'est la colonne f qui doit être prise en compte):
Dim myctrl, dernligne, I
If MsgBox("Etes-vous sûr de vouloir supprimer tous les emprunts à terme?", vbExclamation + vbOKCancel, "Suppression emprunts") = vbOK Then
dernligne = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Count - 1
Application.ScreenUpdating = False
For I = dernligne To 1 Step -1
If Application.WorksheetFunction.CountA(Rows(I)) < [A2] Then
Rows(I).Delete shift:=xlUp
End If
Next I
Else
Cancel = True
End If
en fait il faudrait qu'il me fasse le test pour chaque cellule (à partir de la n° 5) de la colonne F puis qu'il me mette automatiquement les lignes non-supprimées à la suite. est-ce que quelqu'un aurait une idée? merci d'avance
Landoltp
Messages postés68Date d'inscriptionmercredi 1 août 2007StatutMembreDernière intervention14 mars 2008 7 sept. 2007 à 18:59
finalement ça joue avec ce code:
Private Sub CommandButton5_Click()
Dim i As Integer
Sheets("Feuil1").Select
'si la colonne de dernière date est par ex "F"
For i = 1 To Range("F65536").End(xlUp).Row
If Cells(i, 6).Value <> "" And Cells(i, 6) < Now Then
Cells(i, 6).EntireRow.Delete
i = i - 1
' --------
End If
Next i
End Sub
Landoltp
Messages postés68Date d'inscriptionmercredi 1 août 2007StatutMembreDernière intervention14 mars 2008 7 sept. 2007 à 13:30
j'ai essayé de faire avec ton idée, mais ça ne marchait pas. le plus proche que j'ai réussi à faire pour l'instant c'est ça:
Private Sub CommandButton2_Click()
'Dim myctrl, dernligne, I 'il semble qu'on est pas obligé de déclarer toutes ces variables...
'Dim lig As Long
'Dim col As String
'Dim nbrlig As Long
'Dim numlig As Long
If MsgBox("Etes-vous sûr de vouloir supprimer tous les emprunts à terme?", vbExclamation + vbOKCancel, "Suppression emprunts") = vbOK Then
col = "F" ' colonne données non vides à tester'
With Sheets("feuil1") ' feuille source'
nbrlig = .Cells(65536, col).End(xlUp).Row
For lig = 5 To nbrlig 'n° de la 1ere ligne de données'
If .Cells(lig, col).Value <> [B2] Then
.Cells(lig, col).EntireRow.Delete
End If
Next
End With
Else
Cancel = True
End If
End Sub
le problème c'est qu'il fait une ligne sur deux à chaque fois qu'on lance le programme et il ne tient pas compte de [B2], il me laisse uniquement les lignes qui ont la valeur 0 dans la colonne F...