Erreur macro simple, erreur 400

craps_le_vrai

XLDnaute Nouveau
Bonjour,

Je connais peu les macro mais quand j'en vois une qui me paraiit un bon outil, je l'utilise.

C'est un fichier de facturation, environ 30 factures/mois pour le meme client.
Une fois les factures finies, je veux récapituler les factures, libellés, montant, dans un onglet "synthese".

J'ai copie la macro suivante:

Sub GenererSynthese()
Dim sh As Worksheet, Ctr As Integer
For Each sh In Sheets
If sh.Name <> "Synthese" Then
Ctr = Ctr + 1
Sheets("Synthese").Range("A1" & Ctr) = sh.Name
Sheets("Synthese").Range("B1" & Ctr) = Sheets(sh.Name).Range("G9")
Sheets("Synthese").Range("C1" & Ctr) = Sheets(sh.Name).Range("A12")
Sheets("Synthese").Range("H1" & Ctr) = Sheets(sh.Name).Range("H50")
End If
Next
End Sub

Probleme: Ca fonctionne en test avec 4 ou 5 onglets, mais avec 26 onglets, le recap s'arrete à 9 . J'ai fait l'essai sur un autre PC, la macro bug et affiche erreur 400.

QQun peut il me dire ou est l'erreur?

Merci d'avance
 

Pièces jointes

  • 2008_05_FactureTest.zip
    39.6 KB · Affichages: 53
C

Compte Supprimé 979

Guest
Re : Erreur macro simple, erreur 400

Salut Craps,

Ton code est éronné, essaye plutôt cela
Code:
Sub GenererSynthese()
Dim sh As Worksheet, Ctr As Integer
For Each sh In Sheets
  If sh.Name <> "Synthese" Then
    Ctr = Ctr + 1
    With Sheets("Synthese")
      .Range("A" & 10 + Ctr) = sh.Name
      .Range("B" & 10 + Ctr) = Sheets(sh.Name).Range("G9")
      .Range("C" & 10 + Ctr) = Sheets(sh.Name).Range("A12")
      .Range("H" & 10 + Ctr) = Sheets(sh.Name).Range("H50")
    End With
  End If
Next
End Sub

Voilà ;)
 

Lii

XLDnaute Impliqué
Re : Erreur macro simple, erreur 400

Bonsoir,

On peut aussi utiliser la variable "Sh" au maximum pour avoir un code légèrement simplifié :
Code:
Sub GenererSynthese()
  Dim [B]Sh[/B] As Worksheet, Ctr As Integer
  Ctr = 10
  For Each [B]Sh[/B] In Sheets
    If [B]Sh[/B].Name <> "Synthese" Then
      Ctr = Ctr + 1
      With Sheets("Synthese")
        .Range("A" & Ctr) = [B]Sh.[/B]Name
        .Range("B" & Ctr) = [B]Sh.[/B]Range("G9")
        .Range("C" & Ctr) = [B]Sh.[/B]Range("A12")
        .Range("H" & Ctr) = [B]Sh.[/B]Range("H50")
      End With
    End If
  Next
End Sub
 
C

Compte Supprimé 979

Guest
Re : Erreur macro simple, erreur 400

Re,

L'erreur est située dans la formulation de ta plage

Il en faut pas mettre : .Range("A1" & Ctr)

Mais : .Range("A" & Ctr) ou .Range("A" & 10 + Ctr)

Le "&" commercial n'est pas un signe d'addition, mais de concaténation

Voilà ;)
 

craps_le_vrai

XLDnaute Nouveau
Re : Erreur macro simple, erreur 400

Merci de la précision.

Si j'ai bien compris la nature de l'erreur, A1 & Ctr s'arrete à 19 (Ctr9), la suite logique devant etre 110 (A1 & Ctr10)...
Ai je compris?


P?S. fait il beau dans le Gâtinais...j'y ai habité 3/4 ans dans un petit village à cote de Ferrieres, c'était sympa
 
C

Compte Supprimé 979

Guest
Re : Erreur macro simple, erreur 400

Salut Craps,

Merci de la précision.
Si j'ai bien compris la nature de l'erreur, A1 & Ctr s'arrete à 19 (Ctr9), la suite logique devant etre 110 (A1 & Ctr10)...
Ai je compris?
Tout à fait, c'est exactement ça ;)

P.S. fait il beau dans le Gâtinais...j'y ai habité 3/4 ans dans un petit village à cote de Ferrieres, c'était sympa
Pour le temps, c'est toujours aussi mitigé comme un peu partout :rolleyes:
Celui qui ne connais pas le gâtinais, loupe quelque chose :D

A+
 

Statistiques des forums

Discussions
312 884
Messages
2 093 242
Membres
105 658
dernier inscrit
Mario Richard