Rendre une zone variable

  • Initiateur de la discussion Initiateur de la discussion Sebast
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Sebast

XLDnaute Impliqué
Bonjour au forum,

j'ai un code me permettant de supprimer des enregistrements correspondant à des critères définis mais fixes. Je cherche comment rendre dynamique la plage où se trouvent ces critères; malheureusement ça plante.

En pièce jointe le code qui marche (mais aux critères figés) et le code (aux critères variables) qui plante.

Merci d'avance à tous ceux qui voudront se pencher sur mon problème

Sebast
 

Pièces jointes

Re : Rendre une zone variable

Bonjour,
en partant de ta macro, peut-être comme cela :
Code:
 Sub supprimer_quand_critère_dynamique()
   Dim i As Long
   Dim pays_à_supprimer As Range

With Sheets("Paramètres")
   Set pays_à_supprimer = .Range(.Range("B3"), .Range("B3").End(xlDown))
End With
      With Sheets("Base")
         For i = .UsedRange.Rows.Count To 2 Step -1
            If Application.WorksheetFunction.CountIf(pays_à_supprimer, .Cells(i, 2)) > 0 Then .Rows(i).Delete shift:=xlUp
         Next i
      End With
End Sub
A+
 
Re : Rendre une zone variable

Bonjour tout le monde,

Code:
Sub supprimer_enregistrements_quand_pays()
 Set f = Sheets("param")
 nbpays = f.Range("b3").End(xlDown).Row
 Sheets("Base").Activate
     For i = ActiveSheet.UsedRange.Rows.Count To 2 Step -1
         If Application.WorksheetFunction.CountIf(f.Range("B3:B" & nbpays), Cells(i, 2)) >= 1 Then
             Rows(i).Delete
         End If
     Next i
 End Sub

Dans ce code, j'avais déjà prévu que la liste des pays serait variable...
CF ce post

Sinon tu peux toujours définir un nom pour ta liste en dynamique et l'utiliser dans la formule CountIf
Ex :
Code:
SupprPays=DECALER(Paramètres!$B$3;;;NBVAL(Paramètres!$B:$B)-1)
Et dans le code :
Code:
Application.WorksheetFunction.CountIf(Range("supprpays"), Cells(i, 2)) >= 1

BOnne journée
 
Dernière édition:
Re : Rendre une zone variable

Merci David84, merci PrinceCorwin,

je ne suis pas fan de Application.WorksheetFunction.CountIf mais je m'incline, ça marche ! En fait, les fonctions me paraissent compliquées et je cherche à les contourner mais c'est sûrement idiot : il va falloir que je m'y mette car ça paraît incontournable dans bien des cas ...

Encore merci
 
Re : Rendre une zone variable

Bonjour,

En plus cette fonction CountIf, permet aussi de gagner du temp.
Au lieu de parcourrir ta liste de pays autant de fois que tu as de pays a supprimer avec ta première solution, avec CountIf tu ne parcour qu'une seul fois ta liste.
Donc gain de temps.

Bonne journée
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

M
Réponses
5
Affichages
2 K
MOA_Excel
M
T
  • Question Question
Réponses
125
Affichages
14 K
S
Réponses
7
Affichages
1 K
SH2020
S
Y
  • Question Question
Réponses
4
Affichages
956
Yondaime114
Y
N
Réponses
17
Affichages
3 K
ninajams
N
H
Réponses
6
Affichages
1 K
HOUDY
H
R
Réponses
3
Affichages
944
Resmi
R
P
Réponses
1
Affichages
1 K
Retour