tag:blogger.com,1999:blog-3257543995828262470.post7255180840318518883..comments2024-02-06T11:34:18.409+01:00Comments on Olivier - VBA Excel - Bureautique: VBA : Supprimer des lignes en fonction d’une valeur contenue dans un champ (2).Olivier VBAhttp://www.blogger.com/profile/01518798078822033158noreply@blogger.comBlogger5125tag:blogger.com,1999:blog-3257543995828262470.post-83566502360172270692014-01-29T10:50:53.479+01:002014-01-29T10:50:53.479+01:00Merci Jean-Luc pour vote super travail qui sera sa...Merci Jean-Luc pour vote super travail qui sera sans aucun doute fort utile aux lecteurs de ce blogOlivier VBAhttps://www.blogger.com/profile/01518798078822033158noreply@blogger.comtag:blogger.com,1999:blog-3257543995828262470.post-45419152888983761982014-01-26T12:47:29.668+01:002014-01-26T12:47:29.668+01:00(Re)bonjour à tous, une petite erreur de connexion...(Re)bonjour à tous, une petite erreur de connexion et mon commentaire a disparu... Donc je rédige une seconde fois ce dernier (désolé si duplicata)<br /><br />Sur base le la procédure ci-dessus, j'ai adapté le code de façon que :<br /><br />1) La fonction puisse être testée avant exécution, ce qui permet l'estimation par exemple du nombre d'enregistrements à supprimer...<br />2) Assurer la compatibilité avec les différentes versions d'Excel<br />3) Le plus important à mon avis : De passer le nom de la feuille et d'exécuter la fonction en mode résultat ou caché.<br /> Ce qui autorise la réutilisation de la même fonction.<br /><br />Remarque toutefois, ce code n'est pas sélectif, je veux dire par là que toutes les lignes contenant la chaine de caractères spécifiée, seront supprimées.<br /><br />En espérant que ces codes seront utiles, bien à vous.<br /><br />'-- Declaration variable de test<br />Public gDebug As Boolean<br />'<br />'-- Test suppression de lignes en fonction d'une valeur specifique<br />'<br />Function Test(wChoice as Boolean)<br />'-- Declaration des variables de travail<br />Dim wSearch as string, wRetVal as Long<br />'-- Passage en mode debuging (pas de suppression physique)<br />gDebug = True<br />'-- Invitation a saisir la valeur a rechercher<br />wSearch = InputBox("Please, enter de delete value?", "Exemple: Microsoft", "Microsoft")<br />'-- Si chaine de recherche non vide<br />If wSearch <> "" Then <br /> '-- Type execution (Affichage du resultat ou non)<br /> If wShow Then<br /> '-- Exemple avec affichage du nombre de lignes supprimees <br /> wRetVal = gDelSearch(wSearch, "Feuil1")<br /> If wRetVal > 0 Then<br /> MsgBox "Number deleted " & wRetVal _<br /> & " line(s) contains: " & wSearch, _<br /> & vbOKOnly + vbInformation, "INFORMATION"<br /> End If<br /> Else<br /> '-- Exemple execution sans affichage du resultat<br /> Call gDelSearch(wSearch, "Feuil1")<br /> End If<br />End If<br />'<br />End Function<br />'<br />'Fonction: Suppression des lignes contenant une valeur specifique<br />' dans un classeur donne<br />'<br />Function gDelSearch(wSearch As String, wSheet As String) As long<br />'-- Declaration des variables de travail<br />Dim wCtrLig As Long, wCtrCol As Long<br />Dim wDerLig As Long, wDerCol As Long<br />Dim wNbrLig As Long, wFound As Boolean<br />'-- Initialisation du compteur de lignes supprimees<br />wNbrLig = 0<br />'-- Boucle analyse sur la feuille spécifiee<br />With ThisWorkbook.Sheets(wSheet)<br /> '-- Recuperation derniere ligne active<br /> wDerLig = Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row<br /> '-- Recuperation derniere colonne active<br /> wDerCol = Cells(1, Cells.Columns.Count).End(xlToLeft).Column<br /> '-- De la derniere ligne vers la premiere<br /> For wCtrLig = wDerLig to 1 Step -1<br /> '-- Initialisation du switch (Vrai ou Faux) <br /> wFound = False<br /> '-- De la premiere colonne vers la derniere<br /> For wCtrCol = 1 To wDerCol<br /> '-- Test si la cellule contient la valeur specifiee <br /> If InStr(.Range("C" & wCtrCol).Value, wSearch) <> 0 Then<br /> '-- Positionne le switch a Vrai<br /> wFound = True<br /> End If<br /> Next wTotCol<br /> '-- Si au minimum un element est trouve<br /> If wFound Then<br /> '-- Incrementation du compteur de lignes supprimees<br /> wNbrLig = wNbrLig + 1<br /> '-- Suppression de la ligne en cours<br /> If Not gDebug Then Rows(wCtrLig).Delete<br /> End If <br /> Next wCtrLig<br />End With<br />'-- Retourne le nombre de lignes supprimees<br />gDelSearch = wNbrLig<br />'<br />End Function<br /><br />Anonymoushttps://www.blogger.com/profile/05711294732377573980noreply@blogger.comtag:blogger.com,1999:blog-3257543995828262470.post-24605894327324685942013-04-24T18:29:26.715+02:002013-04-24T18:29:26.715+02:00Bonjour
Une solution peu élégante mais efficace s...Bonjour<br /><br />Une solution peu élégante mais efficace serait de refaire une boucle pour la colonne A et une autre pour la colonne B en les plaçant avant ou après la première boucle.<br /><br />Il suffit alors de remplacer "C" par "A" puis par "B"<br /><br /> For i = .Range("C" & .Rows.Count).End(xlUp).Row To 2 Step -1<br />If InStr(.Range("C" & i).Value, Editeur) <> 0 Then<br /><br />Rows(i).Delete<br />lig = lig + 1<br /><br />End If<br />Next i<br /><br />Bon courage<br />Olivier VBAhttps://www.blogger.com/profile/01518798078822033158noreply@blogger.comtag:blogger.com,1999:blog-3257543995828262470.post-81136195032194085042013-04-18T17:30:26.528+02:002013-04-18T17:30:26.528+02:00Bonjour mon terme est aussi présent dans 3 colonne...Bonjour mon terme est aussi présent dans 3 colonnes en A, B et C... Aurais tu un code miracle, le tiens n'a que fonctionné pour ma colonne C...Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3257543995828262470.post-10495616018633083902009-07-16T18:12:37.428+02:002009-07-16T18:12:37.428+02:00Bonjour,
Votre code m'intéresse mais mon prob...Bonjour,<br /><br />Votre code m'intéresse mais mon problème est un peu différent. La valeur qui m'intéresse peut se cacher dans plusieurs colonnes différentes et, d'autre part, je ne souhaite pas supprimer les lignes mais au contraire les afficher et cacher les autres.<br /><br />Merci d'avance pour votre aide.Anonymousnoreply@blogger.com