Un profane a besoin d'aide...

gaspardl

XLDnaute Nouveau
Bonjour à tous,

Je suis un néophite très très bête (qui ne comprend pas la différence entre une macro et le VB (c'est comme ça qu'on dit?), et je serais enchanté que quelqu'un puisse m'aider un peu:


Je cherchais un moyen (dans un gros fichier excel "produit" avec environ 5000 lignes), de supprimer automatiquement un certain nombre de lignes en fonction de deux critères:

en gros, si telle cellule (colonne D) de telle ligne a une valeur supérieure ou égale à telle valeur (disons 5), elle est supprimée automatiquement

et

si telle cellule (colonne C) de telle ligne a une valeur (en l'occurence pas une valeur chiffrée mais un mot, disons "gloubiboulga"), elle est aussi supprimée.

Mon but était d'obtenir ainsi un fichier "écrémé"' ne contenant que les lignes ayant une valeur en colonne D supérieure à 5, et un mot différent de "gloubiboulga" en colonne C.

Suis-je clair? (j'en doute)

Bref, j'ai trouvé cette macro (est-ce bien une macro?) sur un site internet, et cela m'avait l'air de correspondre à peu près à ce que je cherchais:

Sub suppr_ligne_de_toto()
For lin = ActiveSheet.UsedRange.Rows.Count + ActiveSheet.UsedRange.Row To 1
Step -1
If Cells(lin, 1) = "toto" Then Rows(lin).Delete Shift:=xlUp
Next lin
End Sub

Le créateur de la macro s'expliquait ainsi:

je m'explique
ActiveSheet.UsedRange.Rows.Count + ActiveSheet.UsedRange.Row c'est le n° de
la dernière ligne utilisée dans la feuille
je balaie les lignes en partant de la dernière et en remontant (step -1)
pourquoi ? parce que si je descends, quand j'ôte une ligne, je me retrouve
décalé d'un cran et ça me fatique de remonter pour ne pas rater un toto.
cells(lin,1) est la première cellule de la ligne n° lin

Mais j'ai deux problèmes:

1) cette macro n'utilise qu'un seul critère de suppression, alors que j'en ai deux (suffit-il de rajouter une ligne "If etc..." avec mon deuxième critère

2) Même cette version simple (la version toto) ne marche pas quand j'essaie de m'en servir sur mon fichier excel: j'ai un message d'erreur quand je clique sur exécuter: "erreur de compilation: sub ou functiun mal définie"), et excel me surligne en jaune la première ligne ("Sub suppr_ligne_de_toto()"), et en bleu le mot "Step".

Voilà mon souci, j'espère que mon charabia sera compris des illustres experts...

Si quelqu'un avait l'infinie bonté de bien vouloir m'aider à régler mon petit problème, je lui serais infiniment reconnaissant.

Bonne journée à tous,

Gaspard L.
 

tototiti2008

XLDnaute Barbatruc
Re : Un profane a besoin d'aide...

bonjour Garspardl,

Essaye avec le code suivant :

Code:
Sub suppr_ligne_de_toto()
For lin = ActiveSheet.UsedRange.Rows.Count + ActiveSheet.UsedRange.Row To 1 Step -1
If Cells(lin, 3) = "gloubiboulga" or Cells(lin, 4) <=5 Then
Rows(lin).Delete Shift:=xlUp
Next lin
End Sub

Ce code supprime les lignes contenant gloubiboulga en colonne C ou contenant un nombre inférieur ou égal à 5 en colonne D. C'était bien ça ?
 

gaspardl

XLDnaute Nouveau
Re : Un profane a besoin d'aide...

Merci énormément tototiti.

C'était presque ça, j'ai simplement remplacé ton "Or" par un "And" j'avais du mal m'expliquer sur ce point. Le seul truc, c'est que j'ai encore un message d'erreur: quand je clique sur exécuter macro, excel me met "erreur de compilation: next sans for", et ça me surligne en jaune la première ligne de code, à savoir Sub suppr_ligne_de_toto().

Je suis un peu perdu... Saurais-tu m'aider encore un peu?

Merci encore,

Gaspard
 

gaspardl

XLDnaute Nouveau
Re : Un profane a besoin d'aide...

Merci énormément tototiti.

C'était presque ça, j'ai simplement remplacé ton "Or" par un "And" j'avais du mal m'expliquer sur ce point. Le seul truc, c'est que j'ai encore un message d'erreur: quand je clique sur exécuter macro, excel me met "erreur de compilation: next sans for", et ça me surligne en jaune la première ligne de code, à savoir Sub suppr_ligne_de_toto().

Je suis un peu perdu... Saurais-tu m'aider encore un peu?

Merci encore,

Gaspard

Juste une petite précision: en fait il me semble que les lignes que je cherchais à "déleter" étaient en fait celles qui correspondaient à la description suivante:

If Cells(lin, 3) <> "gloubiboulga" Or Cells(lin, 4) <= 5

Merci de m'aider!...
 

tototiti2008

XLDnaute Barbatruc
Re : Un profane a besoin d'aide...

Ah ben oui... le problème du Copier-coller c'est qu'on relit pas toujours trés bien...;)

Code:
Sub suppr_ligne_de_toto()
For lin = ActiveSheet.UsedRange.Rows.Count + ActiveSheet.UsedRange.Row To 1 Step -1
If Cells(lin, 3) = "gloubiboulga" or Cells(lin, 4) <=5 Then
Rows(lin).Delete Shift:=xlUp
[COLOR="Red"]End if[/COLOR]
Next lin
End Sub
 

tototiti2008

XLDnaute Barbatruc
Re : Un profane a besoin d'aide...

Pour tes conditions :

si telle cellule (colonne C) de telle ligne a une valeur (en l'occurence pas une valeur chiffrée mais un mot, disons "gloubiboulga"), elle est aussi supprimée.

puis

et un mot différent de "gloubiboulga" en colonne C

se contredisent, donc je te laisse mettre les conditions en fonction de ce que tu veux

puis
 

Discussions similaires

Réponses
1
Affichages
114
  • Question
XL pour MAC mise en forme
Réponses
2
Affichages
123
Réponses
17
Affichages
476

Statistiques des forums

Discussions
312 329
Messages
2 087 331
Membres
103 519
dernier inscrit
Thomas_grc11