Erreur 1004 de mon code sur vba excel

Bonjour,

j'ai une feuille "heures imputees" dans laquelle j'ai un tableau croisé dynamique avec 6 colonnes,

mois technicien client affaire chapitre heures

je voudrais 2 totales des heures par affaire

un total pour CHESI Christophe et VINCENT Jean-claude => BE ( partie électrique)
un total pour le reste des techniciens => SOFT ( programmation d'automate)

je dois pouvoir récupérer le totale des heures pour c'est 2 groupe en fonction des chapitres ( A02 L05 ..)

exemple final

affaire Chapitre BE SOFT

XX.XX.XXXX A02 54 123

voici mon code dans un moduel 1

Option Explicit

Dim N°AFFAIRE As String

Dim CHAPITRE As String

Dim HEURES As Integer

Sub Remplir_Bilan()

' Définition des variables générales
Dim A As Integer

HEURES = 0
CHAPITRE = Range("B")
'Rechercher les heures Imputées sur N°AFFAIRE & CHAPITRE
For A = 2 To 2600

Worksheets("Heures Imputees").Activate
If (Worksheets("Heures Imputees").Range("d" & A).Value = N°AFFAIRE) And CHAPITRE = "A02" Then
HEURES = Worksheets("Heures Imputees").Cells(A, 7).Value + HEURES
End If
Next A

End Sub

j'ai une erreur 1004, et je suis meme pas sur que mon code soit correcte quelq'un peut maider svp, c'est urgent et important, j'ai beau chercher sur le net des solutions je n'y arrive pas, je debute en vba excel

3 réponses

  1. C'est l'option Explicit qui provoque la demande de définition de la variable.
    Pour l'erreur d'exécution, à quelle ligne se situe l'erreur ?
    1. Sub Remplir_Bilan()

      ' Définition des variables générales
      Dim A As Integer
      Dim numéros_affaire As Range
      Dim chapitre As Range

      HEURES = 0

      Set numéros_affaire = Intersect(Sheets("Heures Imputees").Columns("D").Rows, Sheets("Heures Imputees").UsedRange) 'restriction à la plage utilisée

      Set chapitre = Sheets("Heures Imputees").Columns("E").Rows

      'Rechercher les heures Imputées sur N°AFFAIRE & CHAPITRE
      For Each no_affaire In numéros_affaire
      A = no_affaire.Row
      If no_affaire.Value = N°AFFAIRE And chapitre.Rows(A).Value = "A02" Then
      HEURES = Worksheets("Heures Imputees").Cells(A, 7).Value + HEURES

      End If

      Next
      1. merci de ton aide, il me dit no_affaire variable non definie, j'ai donc declare no_affaire as range, et maintentant il me dit : erreur d'execution 9 l'indice n'appartient pas a la selection

        si tu as encore le temps de m'aider sa serait sympas merci
    2. Contributeur
      Bonjour,

      A première vue il y a déjà cette syntaxe qui n'est pas correcte :

      CHAPITRE = Range("B")

      C'est par exemple CHAPITRE = Range("B1") qui est correct

      et même pour être plus rigoureux : CHAPITRE = Range("B1").value

      A+
      Cordialement,
      1. je cherche a mettre en condition ma colonne E (chapitre) = A02
        peut etre doit je mettre avant le for
        CHAPITRE = Worksheets("Heures Imputees").Range("E" ).Value
        qu'en pense tu
        j'ai mis cette nouvelle ligne a la place de Range("E") (c'etait E enfait et non B) et j'ai toujours le probleme