Spécifique macro aidez moi les pro de excel
Fermé
willcomcom
Messages postés
2
Date d'inscription
mardi 21 juillet 2009
Statut
Membre
Dernière intervention
22 juillet 2009
-
22 juil. 2009 à 09:26
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 22 juil. 2009 à 10:50
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 22 juil. 2009 à 10:50
A voir également:
- Spécifique macro aidez moi les pro de excel
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
5 réponses
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 712
22 juil. 2009 à 09:49
22 juil. 2009 à 09:49
bonjour
Il te suffit de faire un filtre personnalisé sur la colonne avec "contient" "OIF" et de supprimer les lignes sélectionnées.
Il te suffit de faire un filtre personnalisé sur la colonne avec "contient" "OIF" et de supprimer les lignes sélectionnées.
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
22 juil. 2009 à 09:51
22 juil. 2009 à 09:51
Bonjour
aidez moi les pro de excel: tu payes combien ?
fonctionne jusqu'à enviiron 2000 "oif"
aidez moi les pro de excel: tu payes combien ?
fonctionne jusqu'à enviiron 2000 "oif"
Sub supprimer_avec_condition() Application.ScreenUpdating = False On Error Resume Next lig = Columns(1).Find("OIF", Range("A65536"), , xlPart).Row Rows(lig).Delete If Err.Number > 0 Then: End supprimer_avec_condition End Sub
tompols
Messages postés
1273
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
435
22 juil. 2009 à 10:09
22 juil. 2009 à 10:09
Bonjour,
Une macro qui fonctionne sur les 6000 lignes (ou plus)
Par contre je suis assez curieux de savoir d'où provient la limitation à environ 2000 résultats avec la méthode .Find ? Michel ?
Une macro qui fonctionne sur les 6000 lignes (ou plus)
Sub supprime() Application.ScreenUpdating = False For i = 6000 To 1 Step -1 If InStr(1, Range("A" & i).Value, "OIF", vbTextCompare) > 0 Then Rows(i).Delete Next Application.ScreenUpdating = True End Sub
Par contre je suis assez curieux de savoir d'où provient la limitation à environ 2000 résultats avec la méthode .Find ? Michel ?
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
22 juil. 2009 à 10:27
22 juil. 2009 à 10:27
bonjour
saturation de la pile
pour voir: remplace END par EXIT SUB avec 3 ou 4 "OIF"; chaque fois que tu relance la macro, "l'ancienne" n'est pas considéré comme terminée et ca s'empile jusqu'à saturer
VBa n'aime pas les récurrences:
je m'étais amusé à faire ce système question de rapidité et tester la récurrence car boucler sur toutes les lignes est un peu lourd: la fonction "find" évite cela
mais on pourrait utiliser "find" sans récurrence...
saturation de la pile
pour voir: remplace END par EXIT SUB avec 3 ou 4 "OIF"; chaque fois que tu relance la macro, "l'ancienne" n'est pas considéré comme terminée et ca s'empile jusqu'à saturer
VBa n'aime pas les récurrences:
je m'étais amusé à faire ce système question de rapidité et tester la récurrence car boucler sur toutes les lignes est un peu lourd: la fonction "find" évite cela
mais on pourrait utiliser "find" sans récurrence...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
22 juil. 2009 à 10:50
22 juil. 2009 à 10:50
Voici "vite fait"
la macro avec "Find"; on boucle autant de fois qu'il y a de "find" au lieu de 6000 fois
la macro avec "Find"; on boucle autant de fois qu'il y a de "find" au lieu de 6000 fois
Sub enlever_OIF() Dim nbre As Long, lig As Long, cptr As Long 'initialisation Application.ScreenUpdating = False nbre = Application.CountIf(Columns(1), "*OIF*") lig = 65536 'cherche et supprilmme les lignes OIF While cptr < nbre lig = Columns(1).Find("OIF", Cells(lig, 1), , xlPart).Row Rows(lig).Delete cptr = cptr + 1 Wend End Sub