Bjr,
Voici mon probleme

J'ai ecrit ce code ( et ca fonctionne )

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Sub Macro1()
zz = Timer
Range("Q2").Select
Do
temp = ActiveCell.Value
fm = Left(temp, 1)
With ActiveWorkbook.Worksheets(1).Columns("J:J").Cells
   Set c = .Find(what:=temp, LookIn:=xlValues _
       , LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
       MatchCase:=False)
       If Not c Is Nothing Then
               Select Case fm
        Case 6
        ActiveCell.Offset(0, -9).Value = "interne M"
        Case Else
        ActiveCell.Offset(0, -9).Value = "interne F"
        End Select
    Else
    ActiveCell.Offset(0, -9).Value = "externe"
    End If
 
End With
ActiveCell.Offset(1, 0).Activate
 
Loop Until IsEmpty(ActiveCell)
zz1 = Timer
zz1 = zz1 - zz
MsgBox (zz1)
End Sub
Je lis la valeur des cellules de la colonne Q ( à partir de Q2) et je recherche s'il y a une occurence dans la colonne J
Si oui, en fonction du premier caractere de la cellule active ( colonne Q) j'ecris interne F ou interne M,
Si non , j'ecris externe
et je boucle tant que que je ne suis pas au bout de la colonne Q

Concretement, c'est un fichier de com telephoniques et je regarde si mon VPN est rentable ( pourcentage de communications internes fixes ou mobiles par rapport au pourcentage de communications externes)

Alors mon probleme c'est le temps de traitement

j'en suis à 81 secondes pour 1000 lignes

Sachant que mon fichier mensuel excede les 40 000 lignes, je vous raconte pas le temps....

D'où ma nouvelle approche

1) trier la colonne Q
2) rechercher dans la colonne J les occurences et comme avant ecrire le resultat

mon probleme , c'est que une fois que j'ai trié la colonne Q, je ne vois pas comment aller du premier au dernier element identique de cette colonne Q....