Gestion des Range VBA Excel

yaya -  
Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

je cherche a faire une fonction excel qui permet de réaliser différents calcul. Cette formule a en paramètre 3 plage de cellule.
Pour cela j'ai utilisé l'editeur de code, cependant je n'arrive pas a récupérer les valeurs de mes plages.
Mes plages sont de différentes tailles (une colonnes, plusieurs lignes/ plusieurs colonnes, plusieurs lignes...)

J'ai réalisé des boucle for parcourir mes plages de calcul, mais je ne sais pas comment récupérer le valeur de mes cellules, j'ai essayé mais aucun succés (surout lorsuqe j'ai plusieurs colonnes), voici une partie du code que j'ai réalisée.

While indexR < RatesRange.Cells

'For each cell in parameter (Questions sheet)
While indexQ < QuestionRange.Cells

'IF value in cell(i) equals value in cell(questions sheet)
If RatesRange.Cells(indexR) = QuestionRange.Cells(indexQ) Then
sum = QuestionNbRange.Cells(indexQ)
nb = nb + 1
End If

indexQ = indexQ + 1
Wend

indexR = i + 1
Wend

merci de votre aide

3 réponses

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

    Function Test(ByRef Plage1 As Range)
    Dim cel As Range
    
      For Each cel In Plage1.Cells
        Test = Test + cel.Value
      Next
    
    End Function
    

    Cordialement
    Patrice
    0
  2. yaya
     
    Merci de ta réponse mais je ne comprend pas comment je distingue mes cellules lorsque j'ai plusieurs colonnes?

    En faite j'ai ces plages de cellule dans ce genre la

    s1.col1 s1.col2 s2.col1 s2.col2 s2.col3 s2.col4 s2.col5
    1 A 1 A B 40 60
    2 B 2 B A 85 80
    3 C 3 B C 10 15
    4 D 4 F D 5 25
    5 E 5 E G 20 10

    mon objectif est de recuperer une valeur se trouvant dans la colonne s2.col4 ou s2.col5 selon les valeur de les autres cellules
    Globalement j'ai:

    sum as integer

    sum=0

    Si s1.col1=s2.col2

    si s1.col2=s2.col2

    sum=s2.col4.value
    finsi
    si sum=0
    si s1.col2=s2.col3
    sum=s2.col5
    finSi
    finSi
    finSi

    Comme en paramétre de ma fonction j'ai 3 plages de cellule, s1.col1;s1col2/s2.col1;s2.col3/s2.col4;s2.col5, comment puis je determiner avec precicion quelle est la valeur de ma cellule récupérée?
    0
  3. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    Bonjour,

    Je ne comprend pas trop ce que tu veux, la valeur de la cellule, c'est cel.value, si tu as 3 plages, tu peux envoyer 3 paramètres à ta fonction :

    Function Test(ByRef Plage1 As Range,ByRef Plage2 As Range,ByRef Plage3 As Range)

    et utiliser cel1, cel2 et cel3 pour comparer les cellules de chaque plage.

    Met un exemple de ton fichier sur https://www.cjoint.com/ et met le lien dans ton prochain poste.
    0