Supprimer une colonne si toutes les valeurs < 10000

Résolu/Fermé
Ilyass - Modifié par Ilyass le 22/04/2016 à 16:38
 1lyass - 25 avril 2016 à 22:52
Bonjour,

je voulais faire une macro qui supprime une colonne si et seulement si toutes ses valeurs sont < 10000.

J'ai essayé ce programme qui supprime une colonne si au moins une est inférieure à 10000:

Sub SupprColonne()

Dim i As Integer
Dim j As Integer
For i = 1 To 368
For j = 1 To 50
If Cells(i, j) <= 10000 Then Columns(j).Delete

Next j
Next i
End Sub

Merci de votre Réponse :)
A voir également:

6 réponses

ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
22 avril 2016 à 17:47
Bonjour

Const lideb = 2
Const codeb = 1
Const cofin = 11
Const mini = 10000

Public Sub SupprimeColonnes()
Dim lifin As Long, co As Long, nblico As Long, plage As Range
Application.ScreenUpdating = False
For co = cofin To codeb Step -1
lifin = Cells(Rows.Count, co).End(xlUp).Row
Set plage = Range(Cells(lideb, co), Cells(lifin, co))
nblico = plage.Count
If Application.WorksheetFunction.CountIf(plage, "<" & mini) = nblico Then Columns(co).Delete
Next co
Application.ScreenUpdating = True
End Sub

tu modifies les constantes en début de code

Cdlmnt
0
Bonjour,

Ca m'a mis un message d'erreur de compilation type: Next sans for alors qu'il y a un for..


Cdlt
0
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
Modifié par ccm81 le 25/04/2016 à 11:30
Peut être ici, où tout doit être dans la même ligne
If Application.WorksheetFunction.CountIf(plage, "<" & mini) = nblico Then Columns(co).Delete

Cdlmnt
0
J'ai plus le message d'erreur mais le programme n'exécute rien ...

Cdlt
0
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
25 avril 2016 à 14:20
1. As tu lancé l'exacution de la macro
2. As tu modifé les valeurs des 4 constantes en début de code selon ta configuration
Const lideb = 2 (première ligne à tester)
Const codeb = 1 (premiere colonne à traiter)
Const cofin = 11 (dernière colonne à traiter)
Const mini = 10000 (seuil pour le test)
Cdlmnt
0
je l'ai bien exécuté en ayant changé les constantes, voilà ce que ça donne:

Const lideb = 1
Const codeb = 1
Const cofin = 50
Const mini = 10000
Public Sub SupprimeColonnes()

Dim lifin As Long, co As Long, nblico As Long, plage As Range
Application.ScreenUpdating = False
For co = cofin To codeb Step -1
lifin = Cells(Rows.Count, co).End(xlUp).Row
Set plage = Range(Cells(lideb, co), Cells(lifin, co))
nblico = plage.Count
If Application.WorksheetFunction.CountIf(plage, "<" & mini) = nblico Then Columns(co).Delete
Next co
Application.ScreenUpdating = True
End Sub

Cdlt
0
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
25 avril 2016 à 15:37
1. Et ???
2. Si tu as en ligne 1 des titres, ça ne fonctionnera qu'avec lideb = 2
3. un exemple avec 50 colonnes sans ligne de titre (Ctrl+k pour lancer)
http://www.cjoint.com/c/FDznJ1Zrq0Q

Cdlmnt
0
Ton programme marche, le mien aussi :)
Et je sais pourquoi le mien ne fontionnait pas; j'ai des données qui s'étendent sur une année voire plus et Il y avait 3 lignes dont les cellules étaitent vides (que je souhaiterais remplir après l'exécution du programme).
est ce que le programme peut s'exécuter alors qu'il y des cellules vides (qu'il les prenne pour des zéros) ??

En tout cas merci infiniment d'avoir donné de ton temps ;)
Smile :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
Modifié par ccm81 le 25/04/2016 à 16:40
Modifier cette ligne (tout sur une ligne)
If Application.WorksheetFunction.CountIf(plage, "<" & mini) + Application.WorksheetFunction.CountIf(plage, "=") = nblico Then Columns(co).Delete

Après réflexion (que je souhaiterais remplir après l'exécution du programme).
si elles sont supprimées comment les rempliras tu ?

Cdlmnt
0
ça change rien, ça ne s'exécute pas tant qu'il y a des cellules vides.

en fait les cellules vides sont en lignes, et le programme supprime des colonnes, ce qui veut dire qu'il restera quelques cellules en lignes que je remplirai après l'exéution du programme.

Cdlt
0
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
25 avril 2016 à 17:22
OK

Donc ça fonctionne comme tu veux
Si c'est fini, peux tu mettre le sujet à résolu (en dessous du titre de ton premier message)

Cdlmnt
0
C'est fait, Merci !

Cdlt
0