Bonjour à tous,
je suis sur un projet qui avance plutôt bien, mais j'ai un soucis récurent alors je me permet de vous le poser pour essayer de trouver une solution.
Lorsque j'active une feuille en particulier, j'appelle une fonction qui doit agir sur une AUTRE feuille (remise à zéro d'un tableau). J'insiste sur le une autre feuille car cette fonction fonctionne parfaitement si je l'appelle depuis la feuille où se trouve le tableau à remettre à zéro.
La fonction en question
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Sub majCal(myYear As String) Dim tNeed As Range Set tNeed = ThisWorkbook.Sheets("BD").ListObjects("TNeed").Range 'permier parcours rouge call matchOffers 'ICI l'appelle de la fonction qui me..... fatigue :p For rNeed = 2 To tNeed.Rows.Count If tNeed.Cells(rNeed, needDateCol).Value <> "" Then getDateCell(tNeed.Cells(rNeed, needDateCol).Value).Interior.Color = getColor("red") End If Next rNeed 'second parcours End Sub
J'ai un bouton sur la feuille "BD" qui appelle cette fonction, et dans ce cas pas de pb, la fonction fait son boulot. Mais lorsque je suis sur une autre feuille => erreur de l'application, et le prog s'arrete sur la ligne :
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 Sub matchOffers() Dim tNeed, toffer As Range Dim tfound As Range Dim otherSlot As String Set tNeed = ThisWorkbook.Sheets("BD").ListObjects("TNeed").Range Set toffer = ThisWorkbook.Sheets("BD").ListObjects("TOffer").Range tNeed.Range(Cells(2, 9), Cells(tNeed.Rows.Count, 13)).Value = "" For rO = 2 To toffer.Rows.Count If toffer.Cells(rO, 7).Value <> "" Then 'recherche le besoin Set tfound = tNeed.Find(toffer.Cells(rO, 7).Value) If tfound Is Nothing Then 'supprimer le lien 'tOffer.Cells(rO, 7).Value = "" Else 'recherche des créneaux If toffer.Cells(rO, 6).Value Like "*{AM}*" Then tfound.Cells(1, 9).Value = toffer.Cells(rO, 1).Value End If If toffer.Cells(rO, 6).Value Like "*{PM}*" Then tfound.Cells(1, 10).Value = toffer.Cells(rO, 1).Value End If If toffer.Cells(rO, 6).Value Like "*{VDN}*" Then tfound.Cells(1, 11).Value = toffer.Cells(rO, 1).Value End If If toffer.Cells(rO, 6).Value Like "*{NUIT}*" Then tfound.Cells(1, 12).Value = toffer.Cells(rO, 1).Value End If 'créneaux autre tmp = Split(tfound.Cells(1, 6), "-") If Not tmp(UBound(tmp)) Like "{*}" Then otherSlot = tmp(UBound(tmp)) tmp = Split(toffer.Cells(rO, 6), "-") If tmp(UBound(tmp)) = otherSlot Then tfound.Cells(1, 13).Value = toffer.Cells(rO, 1).Value End If End If End If End If Next rO End Sub
Une idée ? j'ai essayé d'activer la feuille juste pour la fonction, mais 1 je ne comprend pas pourquoi je dois le faire, et 2 cela m'amène à d'autres erreurs (je pense qu'elle sont dues à la même erreur).
Code : Sélectionner tout - Visualiser dans une fenêtre à part tNeed.Range(Cells(2, 9), Cells(tNeed.Rows.Count, 13)).Value = ""
J'espère avoir été assez précis, je suis autant à la recherche d'une solution, qu'à une explication de l'erreur que je ne comprend pas.
Merci à tous et bon weekend
Partager