VBA : Optimisation + Modification d'une formule
Bonjour!
Je suis un étudiant en plein stage et j'aurais besoin d'aide!
Il y a 2 questions que j'aimerais poser :
- Premièrement, j'ai un classeur excel composé d'environ 35000 lignes, et je dois faire une comparaison entre deux colonnes A et B (comparer 2 références)
puis inscrire "O" ou "N" dans une autre colonne C, si la référence en A et la meme qu'en B. Pour se faire, je fais ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| Dim finColDistrib As Long, finColOT As Long, i As Long
Dim res As Variant, search As Variant
Dim rng As Range
Worksheets("Feuil1").Activate
finColOT = Cells(Rows.Count, "B").End(xlUp).Row
finColDistrib = Cells(Rows.Count, "A").End(xlUp).Row
Set rng = Range("B3:B" & finColOT)
For i = 3 To finColDistrib
search = Range("A" & i)
Set res = rng.Cells.Find(What:=search, LookAt:=xlWhole)
If (res Is Nothing) Then
Range("C" & i) = "N"
ElseIf (res = search) Then
Range("C" & i) = "O"
End If
Next i |
Le problème est que le temps d'exécution est vraiment trop long ... Est-il possible d'optimiser un peu svp? :calim2:
- Deuxièmement, je copie une colonne avec une formule d'un classeur Class1 dans un autre classeur Class2, j'aimerais copier seulement la formule dans le Class2. Ca j'ai réussi :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| Dim classeurSrc As Excel.Workbook
Set class1 = Workbooks.Open(cheminSrc & "Class1")
class1.Worksheets("Feuil1").Activate
finCol = Cells(Rows.Count, "A").End(xlUp).Row
Range("A2:A" & finCol).Copy
DisplayAlerts = False
class2.Worksheets("Feuil1").Range("A2").PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
DisplayAlerts = True
class2.Save
class1.Close |
Le problème est que, dans la formule, on a besoin des données qui se trouvent dans une autre feuille du classeur, et que donc, quand je copie la formule dans Class2, la formule va chercher les données nécessaires dans la Feuil2 de Class1 qui est le classeur d'ou je viens de copier la colonne... Il faudrait que la formule aille chercher les données dans la Feuil2 de Class2. Du coup, comment dois-je faire?
Je vous remercie d'avance! :D
Cordialement!