Erreur d'exécution '1004

Hello tout le monde,

Je suis très novice dans le VBA (je n'y connais rien à vrai dire) et j'ai un soucis avec un fichier. J'ai un collègue qui a créé un fichier avec des macros, le problème c'est qu'il y a eu une nouvelle organisation au sein de mon entreprise et j'ai une équipe qui est passée dans un autre groupe. Jusque là, j'ai réussi à modifié son fichier mais lorsque je veux exécuter les macros, j'ai une erreur d'exécution '1004' qui apparait. Je ne sais pas quel est le problème sachant que sur mes 3 groupes, les macros fonctionnent pour un des groupes mais pas pour les deux autres. Depuis hier je cherche mais je ne trouve pas l'erreur, est-ce que vous pourriez m'aider ? Je vous mets une photo de mon écran

capture

Merci d'avance à ceux qui pourront m'aider car là, je commence à désespérer...

Cordialement,

Kaelinia

Bonjour,

J'ai l'impression que le message est explicite : un problème de taille des zones.

Mais vous devriez copier/coller le code à l'aide des balises </> du ruban d'icônes, ce serait plus simple et lisible.

D'ailleurs, on ne voit pas sur quelle ligne porte l'erreur.

Cdlt,

Hello,

Merci pour votre retour, l'erreur porte sur la dernière ligne, j'ai eu beau refaire les codes, je ne trouve pas l'erreur, la ligne de code fonctionne super bien pour les Data ICQA1 mais pas pour DA1 ni I1 alors qu'il s'agit de la même ligne ^^' Je suis dessus depuis hier, les lignes de codes sont les mêmes que le fichier original qui fonctionne très bien, j'ai juste déplacer les équipes "TOM1" et "Intérimaires TOM1" dans le groupe I1 car à la base, ils étaient dans le groupe DA1. Ils apparaissent bien sur l'onglet "Data I1" mais depuis, impossible d'utiliser la macro pour mettre à jour les data de DA1 et de I1

En fait, le problème, c'est qu'il n'apparait pas explicitement dans le code une plage de destination. Je pense que l'erreur vient de là...

Je vous mets une photo des codes du fichier original, les codes sont exactement les mêmes que sur mon fichier modifié, j'ai seulement déplacé les TOM et intérimaires TOM en I1. Le fichier original fonctionne très bien, mes datas se mettent à jour correctement mais pas sur mon deuxième fichier, je ne comprends vraiment pas le soucis

capture2

Je ne pourrais rien faire avec une image, désolé. Mais vous pouvez copier le code, cliquer sur le bouton </> en haut du ruban de commentaire, coller le code dans la fenêtre qui s'ouvrira, et appuyer sur insérer.

Comme je vous ai dit, ici, on copie des lignes mais on les colle sans préciser où. C'est déjà un problème. Où faut-il que ces lignes soient collées ?

Car il suffit que la cellule active ne se trouve pas en colonne A pour que la méthode échoue.

Sub DataI1()
'
' DataI1 Macro
' Filtre les datas pour l'onglet I1
'

'
    Sheets("Tableau témoin virtuel").Select
    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$I$2000").AutoFilter Field:=8, Criteria1:=Array( _
        "I1G1 CDG7 ", "I1G2 CDG7 ", "I1G3 CDG7 ", "Intérimaires I1G1 CDG7 ", _
        "Intérimaires I1G2 CDG7 ", "Intérimaires I1G3 CDG7 ", "Intérimaires TOM1 CDG7 " _
        , "TOM1 CDG7 "), Operator:=xlFilterValues
    Rows("2:2001").Select
    Selection.Copy
    Sheets("Data I1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, Skipblanks _
        :=False, Transpose:=False
End Sub

Sub DataDA1()
'
' DataDA1 Macro
' Filtre les datas pour l'onglet DA1
'

'
    Sheets("Tableau témoin virtuel").Select
    Rows("1:1").Select
    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$I$2000").AutoFilter Field:=8, Criteria1:=Array( _
    "DA1G1 CDG7 ", "DA1G2 CDG7 ", "DA1G3 CDG7 ", "Intérimaires DA1G1 CDG7 ", _
    "Intérimaires DA1G2 CDG7 ", "Intérimaires DA1G3 CDG7 "), Operator:=xlFilterValues
    Rows("6:2006").Select
    Selection.Copy
    Sheets("Data DA1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, Skipblanks _
        :=False, Transpose:=False
End Sub
Sub DataICQA1()
'
' DataICQA1 Macro
' Filtre les datas pour l'onglet ICQA1
'

'
    Sheets("Tableau témoin virtuel").Select
    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$I$2000").AutoFilter Field:=8, Criteria1:= _
        "=ICQA1 CDG7 ", Operator:=xlOr, Criteria2:="=Intérimaires ICQA1 CDG7 "
    Rows("13:2001").Select
    Selection.Copy
    Sheets("Data ICQA 1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, Skipblanks _
        :=False, Transpose:=False
End Sub

Bonjour,

Voici les lignes de codes. Alors en fait, le fichier se compose de plusieurs onglets. Dans l'onglet "Tableau témoin virtuel", nous copions le listing complet de tous nos salariés. Ensuite, on active les macros et les datas sont envoyé sur les différents onglets "DA1", "I1" et "ICQA1" qui sont nos grosses équipes. Dans chaque équipe, des groupes sont répartis. Notre groupe TOM est passé de l'équipe DA1 à l'équipe I1, j'ai fait le changement mais la macro fonctionne plus alors que le but est de nous sortir les noms des salariés réparti dans chaque équipe qui sont présents et absents pour le jour J. La macro, comme vous pouvez le voir sur la photo, fonctionne pour ICQA1 mais pas pour les deux autres (désolé pour la tonne de rouges, ce sont des données perso) Donc en gros, les datas de "Tableau témoin virtuel" doivent être envoyé sur les 3 autres onglets en fonction de la répartitions des équipes

capture3

J'espère que c'est un peu plus clair maintenant, merci pour l'aide,

Cordialement,

Kaelinia

Bonjour toutes et tous

coucou 3Gb

@Kaelinia

Ah tout Hazard, les deux autres feuilles ne sont-elles pas protégées ?

'en début de macro
Sub DataDA1()
'
' DataDA1 Macro
' Filtre les datas pour l'onglet DA1
'

'
ActiveSheet.Unprotect ("si mot de passe existe")
' la suite du code
'
'et en fin de procédure avant le End Sub:

ActiveSheet.protect ("si mot de passe existe")

' idem pour l'autre

crdlt,

André

Hello Andre,

Non, aucune protection sur les feuilles, quand j'essaye de faire fonctionner la macro et que ça m'affiche le message d'erreur, je clique sur débogage et la dernière ligne de code est surlignée jaune

capture4

Bonjour Kaelinia, Salut Andre ,

@Kaelinia : vous me donnez tout un tas d'infos mais ne répondez pas aux questions que je pose, dont une en particulier : quelle est la plage (ou première cellule) de destination des valeurs ? En fait, c'est un point central : il faut déjà la définir et savoir si on remplace ou si on ajoute les valeurs à la suite.

Il y a des petites choses qui ne vont pas, comme le fait qu'il y ait des espaces de fin (c'est une source d'erreur). Il faudra corriger ça sur le fichier et dans le code.

Par ailleurs, on copie tantôt de 2 à 2000, tantôt de 6 à 2006, ce n'est pas clair.

En tout cas, voici un premier essai avec collage des valeurs, qui viennent donc "remplacer" (enfin pas vraiment car je n'ai aucune idée du contenu des 3 feuilles de destination) les cellules dans la destination. En tout cas, ces valeurs sont collées en A2. S'il fallait les mettre à la suite, alors il y aurait lieu de corriger le code qui ne conviendrait pas :

Sub DataI1()

tfiltre = Array("I1G1 CDG7 ", "I1G2 CDG7 ", "I1G3 CDG7 ", "Intérimaires I1G1 CDG7 ", "Intérimaires I1G2 CDG7 ", _
            "Intérimaires I1G3 CDG7 ", "Intérimaires TOM1 CDG7 ", "TOM1 CDG7 ")

with Sheets("Tableau témoin virtuel")
    .Range("$A$1:$I$2000").AutoFilter Field:=8, Criteria1:=tfiltre, Operator:=xlFilterValues
    .Rows("2:2000").Copy
    Sheets("Data I1").range("A2").PasteSpecial xlPasteValues '<<<< A2 à changer (doit être colonne A !)
    .cells.autofilter
end with

End Sub

Sub DataDA1()

tfiltre = Array("DA1G1 CDG7 ", "DA1G2 CDG7 ", "DA1G3 CDG7 ", "Intérimaires DA1G1 CDG7 ", _
            "Intérimaires DA1G2 CDG7 ", "Intérimaires DA1G3 CDG7 ")

with Sheets("Tableau témoin virtuel")
    .Range("$A$1:$I$2000").AutoFilter Field:=8, Criteria1:=tfiltre, Operator:=xlFilterValues
    .Rows("6:2006").Copy
    Sheets("Data DA1").range("A2").PasteSpecial xlPasteValues '<<<< A2 à changer (doit être colonne A !)
    .cells.autofilter
end with

End Sub

Sub DataICQA1()

tfiltre = array("ICQA1 CDG7 ", "Intérimaires ICQA1 CDG7 ")

with Sheets("Tableau témoin virtuel")
    .Range("$A$1:$I$2000").AutoFilter Field:=8, Criteria1:=tfiltre, Operator:=xlFilterValues
    .Rows("13:2001").Copy
    Sheets("Data ICQA 1").range("A2").PasteSpecial xlPasteValues '<<<< A2 à changer (doit être colonne A !)
    .cells.autofilter
end with

End Sub

Cdlt,

Et voici un second essai avec une macro MAJ qui exécute une unique macro (valable pour les 3 feuilles) avec ajout des valeurs à la suite. Il faut rentrer le nom de la feuille et l'ensemble des critères de filtre en arguments de cette macro :

Sub MAJ()

tI1 = Array("I1G1 CDG7 ", "I1G2 CDG7 ", "I1G3 CDG7 ", "Intérimaires I1G1 CDG7 ", "Intérimaires I1G2 CDG7 ", _
            "Intérimaires I1G3 CDG7 ", "Intérimaires TOM1 CDG7 ", "TOM1 CDG7 ")
tDA1 = Array("DA1G1 CDG7 ", "DA1G2 CDG7 ", "DA1G3 CDG7 ", "Intérimaires DA1G1 CDG7 ", _
            "Intérimaires DA1G2 CDG7 ", "Intérimaires DA1G3 CDG7 ")
tICQA1 = array("ICQA1 CDG7 ", "Intérimaires ICQA1 CDG7 ")

call CopieFiltreVers("Data I1", tI1)
call CopieFiltreVers("Data DA1", tDA1)
call CopieFiltreVers("Data ICQA 1", tICQA1)

end sub

sub CopieFiltreVers(NomFeuille$, tfiltre)

with Sheets("Tableau témoin virtuel")
    .Range("$A$1:$I$2000").AutoFilter Field:=8, Criteria1:=tfiltre, Operator:=xlFilterValues
    .Rows("2:2000").Copy
    with Sheets(NomFeuille)
        nvl = .cells(.rows.count, 1).end(xlup).row + 1
        .range("A" & nvl).PasteSpecial xlPasteValues
    end with
    .cells.autofilter
end with

End Sub

Cdlt,

Rechercher des sujets similaires à "erreur execution 1004"