Accéder à un Range d'une feuille sur VBA

Résolu
Mouaffak_Mohammed Messages postés 20 Statut Membre -  
Mouaffak_Mohammed Messages postés 20 Statut Membre -
Bonjour,

J'essaye d'accéder à des données sur la feuille "Donnees", pour pouvoir accéder à Range("I2")
Dans le code suivant ( oubliez ce qui est en commentaire ) je teste pour savoir si le while accède à la feuille "Donnees" que j'ai activée, mais il fait le calcul sur la feuille où j'appelle la fonction, du coup il considère Range("I2") sur la feuille où j'effectue le calcul et non "Donnees".
Voici mon code :

Public Function PrixUnitaire(Depot, Base_Oil, Transaction, Year, Week)
'Worksheets("Donnees").Activate
Sheets("Donnees").Activate
Dim i As Integer
Dim Sum As Double
Dim j As Integer
i = 0
Sum = 0
j = 0
While (Range("I2").Offset(i, 0) <> "")
'If Range("I2").Offset(i, -8) = Depot And Range("I2").Offset(i, -7) = Base_Oil And Range("I2").Offset(i, -5) = Transaction And Range("I2").Offset(i, -2) = Year And Range("I2").Offset(i, 0) = Week Then
'Sum = Sum + Range("I2").Offset(i, 7)
'j = j + 1
'End If
i = i + 1
Wend
'PrixUnitaire = Sum / j
PrixUnitaire = i
End Function


Merci infiniment pour votre aide.

2 réponses

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    Bonjour,

    Si les valeurs se trouvent sur la feuille "Donnees", essaies :
    Public Function PrixUnitaire(Depot, Base_Oil, Transaction, Year, Week)
    Dim w As Worksheet
    Dim i As Integer
    Dim Sum As Double
    Dim j As Integer
    
      Set w = Worksheets("Donnees")
      i = 0
      Sum = 0
      j = 0
      With w
        While .Range("I2").Offset(i, 0) <> ""
          'If .Range("I2").Offset(i, -8) = Depot And .Range("I2").Offset(i, -7) = Base_Oil And .Range("I2").Offset(i, -5) = Transaction And .Range("I2").Offset(i, -2) = Year And .Range("I2").Offset(i, 0) = Week Then
          'Sum = Sum + .Range("I2").Offset(i, 7)
          'j = j + 1
          'End If
          i = i + 1
        Wend
      End With
      'PrixUnitaire = Sum / j
      PrixUnitaire = i
    End Function


    0
  2. Mouaffak_Mohammed Messages postés 20 Statut Membre
     
    Bonjour;
    Merci de votre réponse.
    J'ai testé votre Code tel qu'il est mais ça m'affiche une erreur " #Value "
    Normalement votre code et le mien devrait marcher !! je n'ai aucune idée où l'erreur peut être.
    J'attends vos retours, Merci.
    0
    1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
       
      Peut-être que ...
      Dim i As Long
      0
    2. Mouaffak_Mohammed Messages postés 20 Statut Membre
       
      Excellent , J'ai pas pensé à ça.Merci .
      0