Présence valeur et suppression ligne
Résolu
Didier
-
Didier -
Didier -
Bonjour,
j'ai un fichier excel comprenant une feuille 1 et une feuille 2
Sur la feuille 1 je fais mon suivi quotidien
Sur la feuille 2 j'ai mes données brutes issues d'une extraction.
Sur ma feuille1, je veux vérifier que chaque valeur de la colonne B (à partir de la ligne 3) est encore présente sur la feuille 2 en colonne AH (à partir de la ligne 2 car j'ai un entête). Si une valeur de la colonne B de la feuille 1 n'est plus en colonne AH de la feuille 2 alors je supprime la ligne de la feuille 1 correspondant à la valeur.
Le nombre de valeurs en colonne B (feuille 1) évolue
Le nombre de valeurs en colonne AH (feuille 2) évolue également
Exemple :
Si la valeur de B7 (par exemple) n'apparaît plus sur ma feuille 2 en colonne AH, ça signifie que le dossier est soldé et donc je peux supprimer la ligne 7 de ma feuille 1
et ainsi de suite
Auriez vous une solution pour moi svp ?
merci pour votre aide
Didier
j'ai un fichier excel comprenant une feuille 1 et une feuille 2
Sur la feuille 1 je fais mon suivi quotidien
Sur la feuille 2 j'ai mes données brutes issues d'une extraction.
Sur ma feuille1, je veux vérifier que chaque valeur de la colonne B (à partir de la ligne 3) est encore présente sur la feuille 2 en colonne AH (à partir de la ligne 2 car j'ai un entête). Si une valeur de la colonne B de la feuille 1 n'est plus en colonne AH de la feuille 2 alors je supprime la ligne de la feuille 1 correspondant à la valeur.
Le nombre de valeurs en colonne B (feuille 1) évolue
Le nombre de valeurs en colonne AH (feuille 2) évolue également
Exemple :
Si la valeur de B7 (par exemple) n'apparaît plus sur ma feuille 2 en colonne AH, ça signifie que le dossier est soldé et donc je peux supprimer la ligne 7 de ma feuille 1
et ainsi de suite
Auriez vous une solution pour moi svp ?
merci pour votre aide
Didier
4 réponses
-
Bonjour,
En gros : Il faut passer par la VBA, peut être avec un bouton pour déclencher l'événement
"Le nombre de valeurs en colonne B (feuille 1) évolue
Le nombre de valeurs en colonne AH (feuille 2) évolue également "
ou quand comment par qui?
-
Bonjour Didier
Code VBA à mettre dans un module :
ALT+F11 pour ouvrir éditeur VBA - Insertion - Module - copier-coller la macro dans la page blanche et fermer l'éditeurSub suppression() Application.ScreenUpdating = False ' desactive rafraichissement écran Dim Ligne As Long Ligne = Sheets("Feuil1").Columns(2).Find("*", , , , xlByColumns, xlPrevious).Row 'dernière ligne remplie For n = Ligne To 2 Step -1 'boucle sur lignes de la dernière en remontant à la 2eme existe = Application.WorksheetFunction.CountIf(Sheets("Feuil2").Range("AH:AH"), Sheets("Feuil1").Range("B" & n)) 'NB.SI valeur en B Feuil1 dans AH Feuil2 If existe = 0 Then Rows(n & ":" & n).Select: Selection.Delete 'effacement ligne si n'existe pas en Feuil 2 Next Application.ScreenUpdating = True ' active rafraichissement écran End Sub
Lancer la macro ensuite depuis la feuille 1 onglet Développeur - Macros
ou insérer un bouton sur la feuille 1 et dans le code du bouton mettre le nom de la macro, comme suggère Fabien
Cdlmnt
Via
-
voila un code à affecter à un bouton, un raccourci clavier ou ce qui te conviendra le mieux
Sub Bouton1_Cliquer() Dim I, DerLig As Long Dim Trouve As Range, PlageDeRecherche As Range Dim Valeur_Cherchee As String, AdresseTrouvee As String Application.ScreenUpdating = False DerLig = Worksheets("feuille 1").Range("B" & Rows.Count).End(xlUp).Row For I = 2 To DerLig If (Worksheets("feuille 1").Range("B" & I) <> "") Then ' affectation de valeurs aux variables : Valeur_Cherchee = Worksheets("feuille 1").Range("B" & I) ' dans la première colonne de la feuille active Set PlageDeRecherche = Worksheets("Feuille 2").Range("AH2:AH" & DerLig) ' méthode find, ici on cherche la valeur exacte (LookAt:=xlWhole) Set Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, LookAt:=xlPart) ' traitement de l'erreur possible : Si on ne trouve rien : If Trouve Is Nothing Then Rows(I).Delete shift:=xlUp ' vidage des variables Set PlageDeRecherche = Nothing Set Trouve = Nothing End If Next I Application.ScreenUpdating = True End Sub
edit : Via a été plus rapide; sa méthode étant différente je propose la mienne (que j'ai appris de cs_Le pivert si ma mémoire est bonne) pour ceux qui feraient des recherches pour un besoin similaire
-
Merci messieurs.
vos 2 solutions fonctionnent parfaitement
je les garde précieusement.
Bravo à vous