Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1591 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Formule VBA Cells.find

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Formule VBA Cells.find

n°1982100
guillaume6​60
Posté le 08-04-2010 à 17:01:56  profilanswer
 

Bonjour  
 
Je suis plus que novice sur vba, je souhaiterais pour un tableau de données supprimer toutes les lignes qui ne contiennent pas dans la colonne B "bureau".
 
J'ai une formule que j'utilisais auparavant qui supprime une ligne si elle contient "bureau" :
 

Code :
  1. Sub suppressionligne()
  2. Do
  3.     If Cells.Find(What:="bureau" ) Is Nothing Then
  4.        Exit Do
  5.     Else
  6.        Cells.Find(What:="bureau" ).Activate
  7.        Selection.EntireRow.Delete
  8.     End If
  9. Loop
  10. End Sub


 
Je pensais qu'en remplaçant = par <> le formule fonctionnerait mais non, quelqu'un aurait-il une solution ?
 
Merci

mood
Publicité
Posté le 08-04-2010 à 17:01:56  profilanswer
 

n°1982109
galopin01
Posté le 08-04-2010 à 17:27:14  profilanswer
 

bonjour,
pour delete ce serait mieux comme ça :
 
Sub test()
i = ActiveSheet.Cells(65535, 2).End(xlUp).Row
For k = i To 1 Step -1
If Not ActiveSheet.Cells(k, 2) = "bureau" Then Rows(k).Delete
Next
End Sub
 
A+

n°1982121
guillaume6​60
Posté le 08-04-2010 à 17:51:22  profilanswer
 

Bonjour galopin01,  
 
Heu ça a supprimer toutes mes données.

n°1982139
galopin01
Posté le 08-04-2010 à 18:47:07  profilanswer
 

Ben c'est bien ce que tu as demandé, ça supprime toutes les lignes qui n'ont pas le mot "bureau" dans la colonne B ?

n°1982140
galopin01
Posté le 08-04-2010 à 18:52:17  profilanswer
 

Ah oui... je vois : YAPA que le mot "bureau"...  
On peut savoir ce qu'il y a quand il y a bureau  
Toute une phrase et ce mot placé aléatoirement.
ou quelque chose comme Bureau A, Bureau B, Bureau 21...  ??
Sinon je vais essayer de te bricoler un truc sur la base de Find...

n°1982156
galopin01
Posté le 08-04-2010 à 19:20:01  profilanswer
 

Re...
Cette macro détecte le mot bureau dans une phrase ou dans n'importe quelle chaine de caractère :
 
Sub test()
i = ActiveSheet.Cells(65535, 2).End(xlUp).Row
For k = i To 1 Step -1
If Not InStr(1, ActiveSheet.Cells(k, 2), "bureau", 1) > 0 Then Rows(k).Delete
Next
End Sub
 
Attention la macro fait la différence entre "bureau" et "Bureau" ou bUreau :  
avec le 1 tous les bureaux avec ou sans majuscule sont conservés.
Si on remplace le 1 par 0 seuls les "bureau" sans majuscules sont conservés.
 
ça me semble sinon difficile, du moins inapproprié d'utiliser Find dans ce cas.
A+

n°1982323
guillaume6​60
Posté le 09-04-2010 à 09:02:17  profilanswer
 

Bonjour Galopin01,
 
Merci beaucoup ça fonctionne nickel !!!
 
J'aurais besoin d'une précision si tu veux bien. J'espère qu'un jour a force de travailler dessus je serai capable de faire cela tout seul comme un grand.
 
Peux tu m'expliquer ta macro ? Car j'aimerais savoir comment je peux le faire sur une autre colonne, et j'aimerais commencer ce travail à partir de la ligne 13 car au dessus il y a des titres que je souhaiterais conserver.
 
En tout merci beaucoup pour ce que tu as fait !

n°1982353
galopin01
Posté le 09-04-2010 à 09:51:33  profilanswer
 

bonjour,
Sub test()  
i = ActiveSheet.Cells(65535, 2).End(xlUp).Row  
For k = i To 1 Step -1  
If Not InStr(1, ActiveSheet.Cells(k, 2), "bureau", 1) > 0 Then Rows(k).Delete  
Next  
End Sub  
 
Les (2) déterminent la colonne de travail :
Pour la colonne C mettre 3...
 
Pour commencer à la ligne 13 mettre :
For k = i To 13 Step -1  
 
Commentaires :
Sub test()  
'Détermination de la dernière ligne de la colonne B (2)
i = ActiveSheet.Cells(65535, 2).End(xlUp).Row  
'La dernière ligne étant i...
'Pour chaque ligne de la dernière (i) à la ligne 13
For k = i To 13 Step -1  
'Si on ne trouve pas le String dans la colonne 2 on supprime la ligne
If Not InStr(1, ActiveSheet.Cells(k, 2), "bureau", 1) > 0 Then Rows(k).Delete  
Next  
End Sub
 
L'astuce étant de remonter de la dernière ligne à la première car quand tu remontes tu t'en fout de supprimer une ligne : les lignes suivantes qui "remontent" lors de la suppression ont déjà été traitées.
On peut aussi y arriver en allant de la première ligne à la dernière ligne, mais c'est plus difficile car lors de la suppression de la ligne en cours, la ligne suivante devient la ligne à cours et du coup il faut réévaluer la ligne en cours et c'est une histoire à  :pt1cable:  
 
A+
 

n°1982398
guillaume6​60
Posté le 09-04-2010 à 10:44:05  profilanswer
 

C'est beaucoup plus clair, merci beaucoup galopin01


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Formule VBA Cells.find

 

Sujets relatifs
[KSH] Find : iname + expression régulière ? - RESOLU -Transfert de données d'une feuille excel vers un tableau VBA
[VBA - Macro Excel] Masquer colonne sous condition[VBA] macro excel pour envoyer plusieurs fichiers
VBA: combiner 2 tableaux excel pour avoir un troisième tableau complet[VBA] lire fichier texte jusqu'à ...
Fonction et Type + Livre VBAcomparateur word +VBA-WORD
VBA recherchev & comboboxVBA Autocad Déplacement en spécifiant une coordonnée
Plus de sujets relatifs à : Formule VBA Cells.find


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR