Bonjour,
J'ai lu cette discussion.
Effectivement cette macro fonctionne très bien.
J'aimerais savoir comment on peut l'appliquer sur toutes les feuilles d'un même fichier.
Bonjour,
J'ai lu cette discussion.
Effectivement cette macro fonctionne très bien.
J'aimerais savoir comment on peut l'appliquer sur toutes les feuilles d'un même fichier.
En parcourant simplement toutes les feuilles de ton classeur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Dim sheet As Worksheet For Each sheet In Sheets sheet.Activate 'Ici le code à faire..... Next
Super. Fonctionne très bien.
Je ne suis pas un expert en VBA. Si je voudrait y ajouter des mots, je m'y prend comment. Exemple: si je voudrais en plus du mot 'ordinateur' les mots 'clavier' et 'souris'. Je suppose que c'est simple, mais je suis débutant.
Il faudrait partir sur la gestion de ces mots dans un tableau par exemple pour les stocker et les modifier de manière simple.
Et dans le traitement parcourir ce tableau pour vérifier chaque mots.
Malheureusement je dois inclure ces mots dans la macro, même si la gestion est un peu plus difficile. Le fichier est exporté d'un autre logiciel et cette liste de mots ne viens pas avec. Concrètement, j'exporte vers Excel une cédule d'ordonnancement de travaux à partir d'un logiciel de planification et par une macro je conserve les équipements qui demande une libération.
Quand je parle de tableau je ne parle pas de feuilles et de cellules mais bien d'un tableau en VBA.
Une Array quoi.
Qui te servira de paramètre dans ton code pour simplifier l'ajout ou la suppression de mots
Voir ici
Je suis ouvert à toutes solutions. Mais je débute avec le VBA et je n'y connait pas grand chose pour l'instant. Si tu peux me fournir le code, cela serait très apprécié. Sinon, en attendant de perfectionner mes connaissances en VBA, je suis prêt à le faire avec la macro actuel. J'ai juste besoin de savoir comment ajouter d'autres mots.
Merci pour le lien, je vais en prendre connaissance.
Ok je regarde ça.
Edit : je te propose ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Public Const mesMots = "toto:tot:titi:tata:tutu" Sub SupLign() Dim i As Long Dim arMesMots() As String Dim mot As Variant arMesMots = Split(UCase(mesMots), ":") For i = Range("B65536").End(xlUp).Row To 1 Step -1 For Each mot In arMesMots If UCase(Cells(i, 2).Value) Like "*" & mot & "*" Then Rows(i).Delete Exit For End If Next Next i End Sub
Si j'ai bien compris, je dois remplacer les mots toto, titi, ... par les mots que j'ai besoin. Si c'est bien cela, je perds toutes mes données.
J'ai éditer le code, j'étais parti sur l'inverse
Du coup c'est plus simple, quand un mots de la liste est trouvé dans la cellule courante, la ligne est supprimée.
Tu place dans mesMots les mots qui doivent engendrer une suppression de la ligne.
EUH...Je désire conserver les lignes qui contiennent ces mots et non les supprimer. Désolé pour la confusion. Je croyais à tort que mes explications était correct.
Le post dans lequel tu est à un titre qui indique :Si tu reprends ce code du coup :Supprimer ligne contenant un mot précis
C'est bien ce que tu veux, si la cellule courante ne contient pas le mot alors sa ligne est supprimée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Public Const mesMots = "toto:titi:tata:tutu" Sub SupLign() Dim i As Long Dim arMesMots() As String Dim mot As Variant Dim trouveMot As Boolean arMesMots = Split(UCase(mesMots), ":") For i = Range("B65536").End(xlUp).Row To 1 Step -1 trouveMot = False For Each mot In arMesMots If UCase(Cells(i, 2).Value) Like "*" & mot & "*" Then trouveMot = True Exit For End If Next If Not trouveMot Then Rows(i).Delete End If Next i End Sub
Effectivement, j'airais probablement du démarrer un autre post et ne pas partir d'un qui existe déjà.
Excellent. Fonctionne à la perfection. Un gros merci, tu viens de rendre quelqu'un heureux.
Dernière question. Est-il possible de conserver les cellules vides. J'ai essayer en ne mettant pas de mot dans la liste. Ça ne fonctionne pas.
=>
Code : Sélectionner tout - Visualiser dans une fenêtre à part If UCase(Cells(i, 2).Value) Like "*" & mot & "*" Then
Code : Sélectionner tout - Visualiser dans une fenêtre à part If UCase(Cells(i, 2).Value) Like "*" & mot & "*" Or IsEmpty(Cells(i, 2).Value) Then
Super. Encore une fois, merci.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager