Exclure des feuilles dans une macro dans le thisworkbooks [Résolu]

Paypay69 5 Messages postés dimanche 19 juillet 2009Date d'inscription 19 décembre 2012 Dernière intervention - 19 juil. 2009 à 18:59 - Dernière réponse : Paypay69 5 Messages postés dimanche 19 juillet 2009Date d'inscription 19 décembre 2012 Dernière intervention
- 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
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Flocreate 307 Messages postés lundi 17 juillet 2006Date d'inscription 27 mai 2012 Dernière intervention - 20 juil. 2009 à 09:45
3
Merci
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

Merci Flocreate 3

codes-sources a aidé 82 internautes ce mois-ci

Commenter la réponse de Flocreate
Meilleure réponse
Flocreate 307 Messages postés lundi 17 juillet 2006Date d'inscription 27 mai 2012 Dernière intervention - 20 juil. 2009 à 09:49
3
Merci
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

Merci Flocreate 3

codes-sources a aidé 82 internautes ce mois-ci

Commenter la réponse de Flocreate
Paypay69 5 Messages postés dimanche 19 juillet 2009Date d'inscription 19 décembre 2012 Dernière intervention - 20 juil. 2009 à 12:50
0
Merci
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
Commenter la réponse de Paypay69

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.