suppression de données si date plus récente

Silverjet59

XLDnaute Nouveau
bonjour le forum


je fait de nouveau appel a votre savoir .....


j'ai un userform qui m'envoie des données dans deux feuilles(jusque la tout va bien :D )

mon problème est: que je voudrais que lorsque je valide les dates de la feuil1 si elles sont plus récentes ,m'efface complètement la ligne correspondante sur la feuil2.:confused:


merci d'avance pour votre aide
 

Pièces jointes

  • tri date.xls
    41 KB · Affichages: 24
  • tri date.xls
    41 KB · Affichages: 25
  • tri date.xls
    41 KB · Affichages: 26
Dernière édition:

Silverjet59

XLDnaute Nouveau
Re : suppression de données si date plus récente

Bonjour
je me permet de faire un petit up car j ai bien essayé de résoudre mon problème mais je n y arrive pas
J'ai aussi fait quelques recherches, mais sans trouver la solution

Peut on m'aider svp?
Merci
 

job75

XLDnaute Barbatruc
Re : suppression de données si date plus récente

Bonjour Silverjet59,

Il n'y a pas de réponse car la question posée n'est pas claire.

Et votre code VBA n'éclaircit rien du tout.

Donnez-nous quelques exemples avec les résultats attendus dans chaque feuille.

A+
 

Silverjet59

XLDnaute Nouveau
Re : suppression de données si date plus récente

ok
désolé

voici plus d explications en fait dans la combobox1 je rentre par exemple "titi", dans la textbox2 la date etc...

quand je valide ,les données sont transférer a la suite dans la feuil2

Si je revalide la combobox1(avec la valeur "titi")mais avec une date différente il faudrait que Si la date de "titi" en feuil1 est plus récente que la feuil2 , toute la ligne de "titi" (en feuil2)soit supprimer

j espère avoir été plus claire dans mes explications
 

job75

XLDnaute Barbatruc
Re : suppression de données si date plus récente

Re,

Si j'ai bien compris, voyez cette macro dans le code de l'UserForm :

Code:
Private Sub CommandButton1_Click()
Dim plage As Range, i As Variant
Set plage = Range(ComboBox1.RowSource)
i = ComboBox1.ListIndex + 1
If i = 0 Then MsgBox "Le nom n'est pas valide...": ComboBox1.DropDown: Exit Sub
If Not IsDate(TextBox2) Then MsgBox "La date n'est pas valide...": TextBox2.SetFocus: Exit Sub
plage(i, 2) = CDate(TextBox2)
plage(i, 3) = TextBox3
With Sheets("Feuil2")
  i = Application.Match(ComboBox1, .[A:A], 0)
  If IsNumeric(i) Then
    If .Cells(i, 2) >= CDate(TextBox2) Then Exit Sub
    .Rows(i).Delete
  End If
  i = .Range("A65536").End(xlUp)(2).Row '1ère ligne vide
  .Cells(i, 1) = ComboBox1
  .Cells(i, 2) = CDate(TextBox2)
  .Cells(i, 3) = TextBox3
End With
End Sub
Fichier joint.

A+
 

Pièces jointes

  • tri date(1).xls
    50.5 KB · Affichages: 25
Dernière édition:

job75

XLDnaute Barbatruc
Re : suppression de données si date plus récente

Bonjour Silverjet59, le forum,

Au lieu de supprimer la ligne en Feuil2 il est peut-être plus simple de la modifier :

Code:
Private Sub CommandButton1_Click()
Dim plage As Range, i As Variant
Set plage = Range(ComboBox1.RowSource)
i = ComboBox1.ListIndex + 1
If i = 0 Then MsgBox "Le nom n'est pas valide...": ComboBox1.DropDown: Exit Sub
If Not IsDate(TextBox2) Then MsgBox "La date n'est pas valide...": TextBox2.SetFocus: Exit Sub
plage(i, 2) = CDate(TextBox2)
plage(i, 3) = TextBox3
With Sheets("Feuil2")
  i = Application.Match(ComboBox1, .[A:A], 0)
  If IsNumeric(i) Then
    If .Cells(i, 2) < CDate(TextBox2) Then
      .Cells(i, 2) = CDate(TextBox2)
      .Cells(i, 3) = TextBox3
      Exit Sub
    End If
  End If
  i = .Range("A65536").End(xlUp)(2).Row '1ère ligne vide
  .Cells(i, 1) = ComboBox1
  .Cells(i, 2) = CDate(TextBox2)
  .Cells(i, 3) = TextBox3
  If Application.CountA(.[A1:C1]) = 0 Then .[A1:C1].Delete xlUp
End With
End Sub
Edit : si au tout début la plage A1:C1 est vide (pas de titres) elle est supprimée.

Fichier (2)

A+
 

Pièces jointes

  • tri date(2).xls
    51.5 KB · Affichages: 22
Dernière édition:

Silverjet59

XLDnaute Nouveau
Re : suppression de données si date plus récente

bonjour job75

MERCI de ton aide

j ai essayer le 1° fichier en le modifiant un petit peu ( supprimé i=.range..............)car plus approprié a mon besoin

je n ai pas trouvé l'erreur que tu avais signalé sur ton post ( If i < 0 Then il faut If i = 0 Then)

encore MERCI a toi et au Forum de nous aider

A+
 

Statistiques des forums

Discussions
314 450
Messages
2 109 726
Membres
110 552
dernier inscrit
jasson