Supprimer une colonne si toutes les valeurs < 10000

Résolu
Ilyass -  
 1lyass -
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 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
Ilyass
 
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 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
Ilyass
 
J'ai plus le message d'erreur mais le programme n'exécute rien ...

Cdlt
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
Ilyass
 
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 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
Ilyass
 
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 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
Ilyass
 
ç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 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
1lyass
 
C'est fait, Merci !

Cdlt
0