Svp pb en vba

usdy Messages postés 258 Statut Membre -  
Polux31 Messages postés 7219 Statut Membre -
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.
Configuration: Windows XP
Internet Explorer 6.0

2 réponses

  1. Polux31 Messages postés 7219 Statut Membre 1 204
     
    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
    1. usdy Messages postés 258 Statut Membre 6
       
      très bien !
      merci Polux
      0
    2. usdy Messages postés 258 Statut Membre 6
       
      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
    3. Polux31 Messages postés 7219 Statut Membre 1 204 > usdy Messages postés 258 Statut Membre
       
      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
    4. usdy Messages postés 258 Statut Membre 6 > Polux31 Messages postés 7219 Statut Membre
       
      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
    5. Polux31 Messages postés 7219 Statut Membre 1 204 > usdy Messages postés 258 Statut Membre
       
      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
  2. Polux31 Messages postés 7219 Statut Membre 1 204
     
    De rien ...

    Bonne continuation.

    ;o)
    0