Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Boucle un peu longue

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

Snoop

XLDnaute Occasionnel
Bonjour tout le monde et le forum ! (enfin vendredi 😛)

J'suis sur un code qui au nombre de ligne me prend un peu de tps, et je voudrais lui donner un pti coup de boost !

le principe est de vérifier pour la colonne A à chaque fois que j'ai un "C"
si le numero client -> est dans une liste pour créer un nouveau fichier.

je me rend compte qu'il met bcp de tps pour tester 30000 lignes avec 12000 numero client (même si je ne crée que 2 fichiers)


Si quelqu'un a une solution, j'ai encore voulue passé par une Variante, mais sans résultat,

en dessous une partie du code d'origine ! --- Merci pour votre aide !😀


sub test()
.......
'------------- recherche de la plage ---------
While Range("a" & i + 1) <> ""

numero_client = Range("b" & i).Value 'numero client
nom_client = Range("c" & i).Value 'nom du client

Do Until Range("a" & j).Value = "C" 'recherche jusqu'a ce que l'on trouve C
j = j + 1
Loop
j = j - 1
'------------ Test si le résultat est dans la liste à prendre -----------------

ThisWorkbook.Activate

Set cc = [b:b].Find(numero_client, LookIn:=xlValues)

If Not cc Is Nothing Then 'si l'on trouve le compte client (cc)

cc.Offset(0, 1) = "ok"

'----------- decoupe fichier et mise en forme entre i et j ------------------
.......
end if

i = j + 1
j = j + 2

Wend
 
Re : Boucle un peu longue

Salut,

Je ne comprend pas bien pourquoi tu scrute deux fois la même colonne.
Une fois en ne prenant que les non-vide, et une fois en prenant les "C".

Pourquoi ne pas réaliser une seule boucle, qui n'intervient que si un "C" est trouvé ?.
for each Cel in range("A1:A9999")
if Cel.value="C" then
numero_client = Cel.offset(0,1).Value 'numero client
nom_client = Cel(Offset(0,2).Value 'nom du client
...
endif
next Cel
 
Re : Boucle un peu longue

Bonjour,

la première permet d'arreter la recherche lorsque c'est vide.. mais peut etre que cela ne sert à rien.

Ensuite, je prend les lignes entre le 1er C et le deuxieme C moins une ligne qui correspond à divers information que je dois copier.

Voili voulou
 
Re : Boucle un peu longue

bonjour Pierrejean,

merci pour le code, mais il faut qu'il coupe à chaque C une feuille (ou autre) à chaque fois avec en change.

J'essaiyerais lundi, mais px tu m'expliquer un peu le code...

tks

merci !!!
 
- 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
33
Affichages
3 K
Réponses
3
Affichages
1 K
K
Réponses
9
Affichages
1 K
E
Réponses
0
Affichages
1 K
estivill
E
Réponses
11
Affichages
2 K
C
Réponses
6
Affichages
1 K
charette36
C
N
Réponses
17
Affichages
3 K
ninajams
N
N
Réponses
1
Affichages
963
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…