Appliquer un code à une liste

  • Initiateur de la discussion Initiateur de la discussion Moulinois
  • 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 !

Moulinois

XLDnaute Occasionnel
Bonjour,

Je sais que le titre n'est pas clair et que je ne devrais peut-être pas utiliser le terme "liste" 🙁

Dans le code suivant, je cherche les lignes qui ont XXXXX en colonne A pour les copier (ainsi que la ligne 1) dans un autre classeur. Le problème c'est que j'ai plusieurs XXXXX et que j'aurais bien voulu les mettre dans une "liste" me permettant d'utiliser un code du genre Elément({46198,46199,46200,46202},W) avec une boucle sur le W (pour changer de valeur).
La liste {46198,46199,46200,46202} viendrait d'un userform (j'ai jamais fait ça, le stress monte 😱)

Code:
k = 0
    
    For Each Cel In Range("A1:A" & Range("A65536").End(xlUp).Row)
        If Cel.Value = XXXXX Then
            N = Cel.Row
            k = k + 1
         End If
    Next
    
    Range("1:1," & N - k + 1 & ":" & N & "").Select
    Selection.Copy
    Workbooks.Add
    ActiveSheet.Paste

Merci de m'aider.
 
Re : Appliquer un code à une liste

re:

si ta base est triée, pourquoi ne pas faire une plage nommée glissante selon 2 criteres, compte de debut : compte de fin ?
Pour au moins deux excellentes raisons :
  1. Je ne sais pas ce que c'est (ce qui peut impliquer un tas d'autres raisons une fois que je saurai) 😀
  2. Il y a de nouveaux numéros qui apparaissent avec le temps donc il me faudrait tout de même quelque chose pour créer les nouvelles plages, non ?


C'est pas possible de transformer la chaîne "46188,46189,46191,46194" entrée dans une InputBox (par exemple) en quelque chose d'utilisable par mon code ?
(En comptant le nombre de virgules, on sait combien il y a de numéros, que l'on peut peut-être récupérer en découpant la chaîne 😕)
 
Re : Appliquer un code à une liste

re:

pas besoin de compter les virgules

Code:
Dim tablo as variant, i as integer

tablo = split(matextbox,",")
for i = lbound(tablo) to ubound(tablo)
      msgbox tablo(i)
next i

ensuite dans une feuille param par exemple : tu nommes la Cellule A1 crit
ensuite dans la feuille de ta base : Menu Edition / Nom / Definir
le nom : maplage
en dessous : la formule
=Decaler(mafeuille!$A$1;equiv(crit;mafeuille!$A:$A;0)-1;0;nb.si(mafeuille!$A:$A;crit);Nombre de colonne)

tu as une plage qui contient toute les lignes du critere

en reprenant la boucle :

Code:
Dim tablo as variant, i as integer

tablo = split(matextbox,",")
for i = lbound(tablo) to ubound(tablo)
      range("crit").value = tablo(i)
      range("maplage").copy destination:=sheets("nouvellefeuille").range("A65536").end(xlup).offset(1,0)
next i
 
Dernière édition:
- 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

Réponses
5
Affichages
702
Réponses
2
Affichages
426
Réponses
3
Affichages
833
Retour