Exclure des feuilles dans une macro dans le thisworkbooks

Résolu
Paypay69 Messages postés 5 Date d'inscription dimanche 19 juillet 2009 Statut Membre Dernière intervention 19 décembre 2012 - 19 juil. 2009 à 18:59
Paypay69 Messages postés 5 Date d'inscription dimanche 19 juillet 2009 Statut Membre Dernière intervention 19 décembre 2012 - 20 juil. 2009 à 12:50
Bonjour le forum

Je suis debutant dans le VBA sous excel. J'ai reussi à me debrouillé jusqu'a maintenant mais la j'y arrive plus

J'ai fait une macro qui me fait des calculs automatique dans "thisworkbook" mais j'aimerais que ca concerne qu'a partir d'une feuille dans mon classeur jsuqu'a a la derniere. En sachant que je rajoute une feuille par semaine je peux pas coller ma macro a chaque fois.

Pouvez-vous m'aider svp. C'est le dernier probleme qui me reste.

Ci-joint le code qui marche pas depuis que j'ai creer ce qui est en rouge.

Vos remarques sont les biens venues

Merci

Private Sub Workbook_SheetActivate(ByVal Sh As Object)



Dim a As Single
Dim b As Single
Dim c As Single
Dim d As Single
Dim e As Single
Dim f As Single
Dim g As Single
Dim h As Single

With ThisWorkbook
For Each Sh In ThisWorkbook.Sheets
If Sh.Index < 40 Then
GoTo Suite
Else
For Index = 40 To .Sheets.Count
a = ActiveSheet.Range("H8")
b = ActiveSheet.Previous.Range("B45")
c = ActiveSheet.Range("H12")
d = ActiveSheet.Previous.Range("C89")
e = ActiveSheet.Range("A1")
f = ActiveSheet.Range("T9")
g = ActiveSheet.Previous.Range("A23")
h = ActiveSheet.Range("D11")

ActiveSheet.Cells(3, 3) = d
ActiveSheet.Cells(3, 6) = d + e + f
ActiveSheet.Cells(6, 8) = a + b - c
ActiveSheet.Cells(8, 8) = g + h


Next Index
Suite

End If
Next Sh
End With
End Sub

Merci par avance

3 réponses

Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 3
20 juil. 2009 à 09:45
Ton algo me semble quelque peut compliqué
(dans la maniere de l'ecrire en tout cas)

Dim WS as WorkCheets
Dim index_min as integer 'l'index du premier WS à traiter
index_min = 40
Dim index as integer
For index = index_min to ThisWorkbook.WorkCheets.Count
Set WS = ThisWorkbook.WorkCheets(index)

a = WS.Range("H8")
b = WS.Previous.Range("B45")
c = WS.Range("H12")
d = WS.Previous.Range("C89")
e = WS.Range("A1")
f = WS.Range("T9")
g = WS.Previous.Range("A23")
h = WS.Range("D11")

WS.Cells(3, 3) = d
WS.Cells(3, 6) = d + e + f
WS.Cells(6, 8) = a + b - c
WS.Cells(8, 8) = g + h
Next

voila ^^
un conseil, n'utilise les Goto que pour la gestion d'erreurs. Même si tu veux quiter prématurément une boucle for utilise l'instruction "Exit For" je te l'accorde elle est ambigue lorsque tu as des For imbriqués. Cela-dit, ça reste plus propre.

j'espere avoir resolu ton problème

VB6, quand yen a plus yen a encore
Il y a tant a apprendre et seulement 24 heures dans une journée
3
Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 3
20 juil. 2009 à 09:49
Ah ! petite chose que je n'avais pas vu ^^
a = WS.Range("H8") est très mauvais parsque ici 'a' deviens en téhorie un pointeur sur la cellule et non pas sur la valeur.

il faudrait metre
a = WS.Range("H8").Text
ou
a = WS.Range("H8").Formula

de même
WS.Cells(3, 3) = d
--> WS.Cells(3, 3).Text = d

Cordialement,

VB6, quand yen a plus yen a encore
Il y a tant a apprendre et seulement 24 heures dans une journée
3
Paypay69 Messages postés 5 Date d'inscription dimanche 19 juillet 2009 Statut Membre Dernière intervention 19 décembre 2012
20 juil. 2009 à 12:50
Bonjour,

Un grand merci a toi. Ca marche nikel.

Maintenant je vais decrypté corectement ton code car je compreds pas certain point.

Et oui debutant oblige de galéré longtemps
0
Rejoignez-nous