Svp pb en vba

Fermé
usdy Messages postés 243 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 20 mai 2018 - 8 janv. 2009 à 09:40
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 9 janv. 2009 à 14:54
Bonjour,
je fais un filtre sur une colonne et je fais la somme des lignes de la colonne concernée.
Quand je lance la macro elle me fais la somme de toutes les lignes même celles qui ne sont pas dans le filtre, j'ai donc fait le code suivant :

Public Sub calcul_quantite()
quantite = 0
Set p = Worksheets("A").Range("Q" & debut+ 1 & ":Q" & fin)
For Each o In p
If Rows(o.Row).Hidden = False Then
quantite = quantite + (i.Value)
End If
Next
Worksheets("A").Range("F2").Value = quantite
End Sub

Mais quand je lance ma macro j'ai une erreur au niveau de la ligne :quantite = quantite + (i.Value) et on me dit :
object required.

merci de m'aider car je n'arrive vraiment pas à trouver.

2 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
8 janv. 2009 à 10:42
Bonjour,

Une première chose : il est préférable et conseillé de déclarer les variables (Option Explicit en début de module). Bien que cela ne soit pas obligatoire, ça permet de savoir ce que représente un objet et ça peut être utile pour la maintenance ...

Remplace : quantite = quantite + (i.Value) par quantite = quantite + (o.Value).

;o)
0
usdy Messages postés 243 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 20 mai 2018 6
8 janv. 2009 à 10:48
très bien !
merci Polux
0
usdy Messages postés 243 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 20 mai 2018 6
8 janv. 2009 à 11:03
j'ai un autre petit problème pour sauvegarder un classeur dans un endroit précis, voici mon code mais quand la sauvegarde se fait elle se fait pas défaut dans mes documents alors que ce n'est pas ce que je souhaite :
Private Sub macro_sauvegarde()

wbk = Application.ActiveWorkbook.Name

'ouverture des fichiers template
Workbooks.Open Filename:="F:\test\temp.xls"
'appel de la fonction macro_fin
macro_fin

'quelques variables utiles
strDate = Format(Date, "dd-mm-yy")
nom = "fichier test"
'chemin d'accès au fichier que l'on va enregistrer
ChDir "C:\test\fin"
ActiveWorkbook.SaveAs Filename:=nom & " " & strDate & ".xls", FileFormat:=xlNormal
Application.ScreenUpdating = True
MsgBox("terminée. Le fichier : " & nom & strDate & ".xls est disponible
Activeworkbook.Close (False)
End Sub
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204 > usdy Messages postés 243 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 20 mai 2018
8 janv. 2009 à 11:16
Regade si ça marche avec ça :
wbk = Application.ActiveWorkbook.Name 

'ouverture des fichiers template 
Workbooks.Open Filename:="F:\test\temp.xls" 
'appel de la fonction macro_fin 
macro_fin 

'quelques variables utiles 
strDate = Format(Date, "dd-mm-yy") 
nom = "fichier test" 

Dim chemin As String
chemin  = "C:\test\fin" 
ActiveWorkbook.SaveAs Filename:=chemin & nom & " " & strDate & ".xls", FileFormat:=xlNormal 

Application.ScreenUpdating = True 

MsgBox("terminée. Le fichier : " & nom & strDate & ".xls est disponible 
Activeworkbook.Close (False) 

End Sub


Je n'ai pas testé.

;o)
0
usdy Messages postés 243 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 20 mai 2018 6 > Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016
8 janv. 2009 à 12:16
merci pour la sauvegarde des fichiers mais j'ai un autre souci et là je ne sais vraiment pas comment faire mon code.
Je veux créer une feuille dans laquelle chaque cellule est la somme des même cellules de plusieurs autre feuilles, en gros : cellules de feuille A = cellules de feuille B + cellules de feuille C + cellules de feuille D
mais je n'arrive pas à faire ma boucle sachant que le nombre de feuilles dont on fait la somme peut varier.
Est ce que tu aurais une idée ?
merci
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204 > usdy Messages postés 243 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 20 mai 2018
8 janv. 2009 à 12:35
Voilà un exemple :

Dim ws As Worksheet
Dim somme As Long

For Each ws In Worksheets
    somme = somme + ws.Range("A1").Value
Next

Worksheets(1).Range("A10").Value = somme


;o)
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
8 janv. 2009 à 11:01
De rien ...

Bonne continuation.

;o)
0