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
A voir également:
- Présence valeur et suppression ligne
- Forcer suppression fichier - Guide
- Partager photos en ligne - Guide
- Presence en ligne instagram - Guide
- Mètre en ligne - Guide
- Aller à la ligne excel - Guide
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?
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'éditeur
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
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'éditeur
Sub 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
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
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
Ce que je voulais dire c'est que le nombre de lignes est une variable pour chaque feuille et pas un nombre constant.
Chaque jour des dossiers sont soldés et d'autres sont créés