Erreur VBA "1004" sur "Apply"

Bonjour à tous,

Je suis coincée :(

J'ai une erreur sur une macro qui fonctionnait pourtant bien. Je ne comprend pas d'où elle vient.

Voici le code:

Option Explicit

Public WB_CampagneE As Workbook 'Classeur : SOURCE
Public WS_Main As Worksheet 'Questionnaire et Conclusion : SOURCE
Public WS_Temp As Worksheet ' Email manager
Public WS_Base As Worksheet ' Onglet Base : thisworkbook
Public WB_Manager As Workbook 'Classeur de destination
Public NBlignes As Long ' nombre de ligne dans mon tableau : Source
Public NBlignes_coll As Long ' nombre de ligne dans mon tableau Base thisworkbook
Public Col_Collab As Integer 'colonne email collab : Base
Public Col_Man As String 'Colonne du manager dans mon tableau : Source
Public TitreCol As Range ' premiere cellule de la colonne manager : Source
Public Nbligne_Man As Long ' nombre de ligne de l'onglet manager : Source
Public Email_Manager As String 'email du manager : Source
Public i As Long
Public Adresse_Macro As String ' adresse du classeur macro (thisworkbook) pour l'enregistrement des sous-classeurs managers
Public NomDuFichier As String ' nom du fichier manager
Public OdictFDF As Scripting.Dictionary

__

Sub Split_Manager_Macro() 'seulement création de l'onglet manager

Application.ScreenUpdating = False

Set WB_CampagneE = ActiveWorkbook
Set WS_Main = WB_CampagneE.Worksheets("Questionnaire et Conclusion")
WS_Main.Activate
Col_Man = "D"
Set TitreCol = Cells(1, 4)
NBlignes = Cells(1, 1).CurrentRegion.Rows.Count

Call Procedure_collaborateurs

---

Sub Procedure_collaborateurs()
Dim email_collab As String
Dim Histo_Form_Coll As String
Dim Col_Form As Long
Dim Col_Statut_form As Long
Dim col_coll_lettre As String

Set OdictFDF = New Scripting.Dictionary

'Dans l'onglet base

Col_Collab = 11 'K
col_coll_lettre = "K"
Col_Form = 20 'T
Col_Statut_form = 28 'AB

Set WS_Base = ThisWorkbook.Sheets("Base")
NBlignes_coll = WS_Base.Cells(1, 1).CurrentRegion.Rows.Count

'TRIER SELON EMAIL COLLAB
WS_Base.Activate

ActiveWorkbook.ActiveSheet.AutoFilter.Sort. _
SortFields.Add2 Key:=Range(col_coll_lettre & "1:" & col_coll_lettre & NBlignes_coll), SortOn:=xlSortOnValues, Order:= _
xlAscending, DataOption:=xlSortNormal

With ActiveWorkbook.ActiveSheet.AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

'boucle i sur les adresse emails collab
Histo_Form_Coll = "" 'on initialise la valide à vide

For i = 2 To NBlignes_coll
email_collab = WS_Base.Cells(i, Col_Collab).Value

' tant que l'adresse emaiil de la nouvelle ligne est identique à la première du bloc email alors faire

While WS_Base.Cells(i, Col_Collab).Value = email_collab
If WS_Base.Cells(i, Col_Statut_form).Value = "Réalisé" Or WS_Base.Cells(i, Col_Statut_form).Value = "inscrit" Then
Histo_Form_Coll = WS_Base.Cells(i, Col_Form).Value & " | " & Histo_Form_Coll ' concaténation des formations du collab' '" | " pour séparer (Pipe avec le trait de la touche 6)
'Histo_Form_Coll = comme une valise

End If
i = i + 1
If i > NBlignes_coll Then Exit Sub

Wend
i = i - 1
'création dictionnaire collab et vérifier la taille de Histo_form_coll
OdictFDF.Add email_collab, Histo_Form_Coll
Histo_Form_Coll = "" 'vide la valise

Next i

End Sub

Je vous joins 2 extraits de mes fichiers. l'onglet "Base" se trouve sur le fichier "forum Base"

Merci beaucoup pour votre aide

image image
13forum-base.xlsm (92.29 Ko)

Bonjour,

La syntaxe correcte est AutoFilter.ApplyFilter. Soit

With ActiveWorkbook.ActiveSheet.AutoFilter
  With .Sort
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
  End With
  .ApplyFilter
End With

Bonne journée

Merci beaucoup pour ta réponse :)

Cela fonctionne.

Rechercher des sujets similaires à "erreur vba 1004 apply"