Supprimer une colonne si toutes les valeurs < 10000
Résolu
Ilyass
-
1lyass -
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 :)
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:
- Supprimer une colonne si toutes les valeurs < 10000
- Supprimer rond bleu whatsapp - Guide
- Déplacer une colonne excel - Guide
- Supprimer une page word - Guide
- Trier une colonne excel - Guide
- Colonne word - Guide
6 réponses
Bonjour
tu modifies les constantes en début de code
Cdlmnt
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
Peut être ici, où tout doit être dans la même ligne
If Application.WorksheetFunction.CountIf(plage, "<" & mini) = nblico Then Columns(co).Delete
Cdlmnt
If Application.WorksheetFunction.CountIf(plage, "<" & mini) = nblico Then Columns(co).Delete
Cdlmnt
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
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
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
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
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
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
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 :)
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 :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
Ca m'a mis un message d'erreur de compilation type: Next sans for alors qu'il y a un for..
Cdlt