Bonjour tout le monde.
Après avoir arpenté "tous" (ou presque) les forums sur Excel je me décide à poser ma question de "noob".
Je travail sur un fichier qui regroupe une feuille de "Contact" dans laquelle je regroupe différentes données sur chaque personne qui m'appelle. A partir de cette feuille, dans ma colonne -E- je rentre l’état du dossier de cette personne, à savoir, -Hors cadre - Annulé - Suspendu - Traité.
Mon fichier contient une seconde feuille "Dossier" dans laquelle je souhaite intégrer toutes les personnes de la feuille "contact" dont l'état du dossier devient "Traité", sans toute fois qu'elles disparaissent de "contact". Pour être un peu plus pénible, je voudrais que les lignes de dossiers traités se suivent sur la feuille "Dossier", peu importe la ligne de provenance dans la feuille "Contact". Attention ça continu, si pour des raisons X ou Y le dossier est Annulé ou suspendu, je voudrais qu'il disparaisse de la feuille "Dossier".
J'ai essayé plusieurs code VBA dont celui ci que j'ai évidement adapté comme j ai pu, mais qui me renvoi une erreur chaque fois que je rentre une nouvelle personne dans "Contact" :
Dans feuille "Contact":
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then
If Intersect(Target, Columns(5)).Value = "Traité" Then
DlgnT = Sheets("Dossier").Cells(Rows.Count, 2).End(xlUp).Row
Target.EntireRow.Copy Destination:=Sheets("Dossier").Cells(DlgnT + 1, 1)
End If
End If
End Sub
Dans feuille "Dossier":
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then
If Intersect(Target, Columns(5)).Value <> "Traité" And _
Intersect(Target, Columns(5)).Value <> "" Then
DlgnP = Sheets("Contact").Cells(Rows.Count, 2).End(xlUp).Row
Target.EntireRow.Delete
End If
End If
End Sub
De mon propre cru, j'ai fais une fonction qui va vous laisser sans voix, ;-) . Je la rentre dans chaque cellule concernées, ça marche pas mal à ceci prés que les lignes dans "Dossier" correspondent aux lignes dans "Contact" je me retrouve donc avec des trous énormes entre chaque ligne dans "Dossier".
=SI(Contact!$E:$E="Traité";Contact!$H:$H;"")
J’espère avoir su m'expliquer. J'utilise Excel 2010 je ne sais pas si cela a une importance mais dans le doute...Si une "simple" formule permettait de le faire ce serai le top.
Merci d'avance à vous tous, qui allez sauver le peu de cheveux qu'il me reste à m'arracher.
Vevzz
Après avoir arpenté "tous" (ou presque) les forums sur Excel je me décide à poser ma question de "noob".
Je travail sur un fichier qui regroupe une feuille de "Contact" dans laquelle je regroupe différentes données sur chaque personne qui m'appelle. A partir de cette feuille, dans ma colonne -E- je rentre l’état du dossier de cette personne, à savoir, -Hors cadre - Annulé - Suspendu - Traité.
Mon fichier contient une seconde feuille "Dossier" dans laquelle je souhaite intégrer toutes les personnes de la feuille "contact" dont l'état du dossier devient "Traité", sans toute fois qu'elles disparaissent de "contact". Pour être un peu plus pénible, je voudrais que les lignes de dossiers traités se suivent sur la feuille "Dossier", peu importe la ligne de provenance dans la feuille "Contact". Attention ça continu, si pour des raisons X ou Y le dossier est Annulé ou suspendu, je voudrais qu'il disparaisse de la feuille "Dossier".
J'ai essayé plusieurs code VBA dont celui ci que j'ai évidement adapté comme j ai pu, mais qui me renvoi une erreur chaque fois que je rentre une nouvelle personne dans "Contact" :
Dans feuille "Contact":
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then
If Intersect(Target, Columns(5)).Value = "Traité" Then
DlgnT = Sheets("Dossier").Cells(Rows.Count, 2).End(xlUp).Row
Target.EntireRow.Copy Destination:=Sheets("Dossier").Cells(DlgnT + 1, 1)
End If
End If
End Sub
Dans feuille "Dossier":
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then
If Intersect(Target, Columns(5)).Value <> "Traité" And _
Intersect(Target, Columns(5)).Value <> "" Then
DlgnP = Sheets("Contact").Cells(Rows.Count, 2).End(xlUp).Row
Target.EntireRow.Delete
End If
End If
End Sub
De mon propre cru, j'ai fais une fonction qui va vous laisser sans voix, ;-) . Je la rentre dans chaque cellule concernées, ça marche pas mal à ceci prés que les lignes dans "Dossier" correspondent aux lignes dans "Contact" je me retrouve donc avec des trous énormes entre chaque ligne dans "Dossier".
=SI(Contact!$E:$E="Traité";Contact!$H:$H;"")
J’espère avoir su m'expliquer. J'utilise Excel 2010 je ne sais pas si cela a une importance mais dans le doute...Si une "simple" formule permettait de le faire ce serai le top.
Merci d'avance à vous tous, qui allez sauver le peu de cheveux qu'il me reste à m'arracher.
Vevzz