Probleme identification feuille => erreur 1004

Bonjour,

je rencontre un soucis avec ma macro si dessous

Bien que j'ai indiqué SET sp = ...

la première recherche s'effectue correctement mais pas les autres sauf si j'ai la feuille staff active.

j'ai une erreur d'exécution 1004 à défaut

Pourriez vous s'il vous plait m'indiquer mon erreur?

merci par avance,

nomtableau = "T_Reports"
TblBD = Range(nomtableau)

  For i = 1 To UBound(TblBD)

If TblBD(i, 7) > Now And TblBD(i, 7) <= Now + 56 And TblBD(i, 10) = "Y" Then
Project_ID = TblBD(i, 1)
periodid = TblBD(i, 2)
Acronym_Range = Application.Match(Project_ID, Worksheets("Projects").Range("A:A"), 0)
Acronym = Worksheets("Projects").Cells(Acronym_Range, 3)

Set Sp = Worksheets("Staff")

    Set plage = Sp.Range("A1:A" & Range("A" & Rows.Count).End(xlUp).row)
    valeur1 = Project_ID
    valeur2 = periodid
    decalage = 7 '(de A à H)
    With plage
        Set ici = .Find(valeur1, LookIn:=xlValues)
        If Not ici Is Nothing Then
            prem = ici.Address
            Do
            If ici.Offset(0, decalage) = valeur2 Then MsgBox Sp.Cells(ici.row, 4) & " " & Sp.Cells(ici.row, 3)

                Set ici = .FindNext(ici)
            Loop While Not ici Is Nothing And ici.Address <> prem
        End If
    End With

End If
Next

Bonjour,

Tu déclares ta variable mais tu ne t'en sert pas ? Set Sp = Worksheets("Staff")

autant écrire directement

Worksheets("Staff").Activate

Ou si tu tiens à ta déclaration alors juste aprés :

Set Sp = Worksheets("Staff")
Sp.Activate
    Set plage = Sp.Range("A1:A" & Range("A" & Rows.Count).End(xlUp).row)

merci mais si justement je l'utilise mais certainement pas bien

Sp.Range("A1:A" & Range("A" & Rows.Count).End(xlUp).row)

Sp.Cells(ici.row, 4)

d'où mon interrogation

Je vois juste que tu l'utilises pour faire une seconde déclaration ( plage= ) mais à aucun moment tu n'actives la Feuille "Staff" Hors tu dis toi même que la macro

fonctionne si la feuille "Staff" est active.

Essaies d'activer la page avant de déclarer ta plage :

Set Sp = Worksheets("Staff")
Sp.Activate
    Set plage = Sp.Range("A1:A" & Range("A" & Rows.Count).End(xlUp).row)

oui cela fonctionne bien si je choisis activate mais je ne voudrais pas forcement quitter la feuille principale d'autant que c'est une macro qui servira à générer des mails donc non visible.

oui cela fonctionne bien si je choisis activate mais je ne voudrais pas forcement quitter la feuille principale d'autant que c'est une macro qui servira à générer des mails donc non visible.

celà n'a pas d'importante si la macro travail vite on ne vois pas le changement de feuille ; il suffit :A la fin de ta macro de refaire un activate sur la feuille principale.

Ou si tu veux pouvoir lancer cette macro à partir de n'importe quelle feuille alors :

Tu ajoutes une variable en début de macro

Dim feuilleencours as worksheet

feuilleencours=ActiveSheet.Name

et à la fin tu réactive :

worksheet(feuilleencours).activate

ok merci c'est que j'avais fait mais pensais que cela pouvait se faire de manière plus propre

et comment à tout hasard mettre

Sp.Cells(ici.row, 4) & " " & Sp.Cells(ici.row, 3)

dans un array que je pourrais ensuite splitter dans

With Olmail' .To =

merci par avance

Rechercher des sujets similaires à "probleme identification feuille erreur 1004"