Vba excel fonction

amine69500 Messages postés 471 Statut Membre -  
fais27 Messages postés 45 Statut Membre -
Bonjour,

je souhaiterais savoir comment je pourrais faire pour appliquer une boucle

qui dans un premier temps va me permettre de compter le nombre de ligne d'un tableau donc les lignes du tableau A1:C1 jusqua A3:C3,
ensuite recuperer les valeurs des lignes je m'explique :

la colonne A = la variable a
la colonne B = la variable b
la colonne C = la variable c

ma fonction

public function toto(a as string, b as string, c as string)

toto = a+b+c

end function

donc comment je pourrais faire pour appliquer la fonction pour chaque ligne
a chaque fois en saute une ligne

merci de votre aide

cordialement

5 réponses

  1. fais27 Messages postés 45 Statut Membre 1
     
    bonsoir,
    la fonction toto que retourne t-elle comme resultat: la somme de toutes les valeurs
    et connais tu les dimensions de ton tableau (range).
    0
  2. amine69500 Messages postés 471 Statut Membre 12
     
    bonsoir et merci de votre aide

    toto retourne un string

    non je connais pas les dimensions de mon tableau

    j'ai trouvé cette methode, mais je sais pas comment l'appliquer a mon probleme

    exemple:

    Sub BouclesForNextImbriquées()

    Dim DerniereLigne As Byte
    DerniereLigne = Range("A3").End(xlDown).Row
    Dim NbreDeLignes As Byte
    NbreDeLignes = DerniereLigne - 2
    ReDim MonTableau(NbreDeLignes, 4)
    Call AffecterValeursTableau(NbreDeLignes)

    End Sub

    Sub AffecterValeursTableau(DerniereLigneTableau)
    Dim CompteurLignes As Byte
    Dim CompteurColonnes As Byte
    For CompteurLignes = 1 To DerniereLigneTableau
    For CompteurColonnes = 1 To 4
    MonTableau(CompteurLignes, CompteurColonnes) = _
    Cells(CompteurLignes + 2, CompteurColonnes + 1)
    Next CompteurColonnes
    Next CompteurLignes
    End Sub

    cordialemnt
    0
  3. fais27 Messages postés 45 Statut Membre 1
     
    ce string que ce qu'il represente
    d'apres cet exemple ta fonction retourne un tableau de valeurs
    la plage de cellules c quoi a1:c3
    en supposant que la plage contient un entete de ligne qui contient les champs

    Sub BouclesForNextImbriquées()

    Dim DerniereLigne As Byte
    DerniereLigne = Range("a1:c3").End(xlDown).Row (=3)
    Dernierecol = Range("a1:c3").End(xlDown).column "je ne suis pas sur" (=3)
    Dim NbreDeLignes As Byte
    NbreDeLignes = DerniereLigne - 1
    NbreDecol = Dernierecol
    ReDim MonTableau(NbreDeLignes, NbreDecol )
    Call AffecterValeursTableau(NbreDeLignes,NbreDecol)

    End Sub

    Sub AffecterValeursTableau(DerniereLigneTableau,Dernierecoltab)
    Dim CompteurLignes As Byte
    Dim CompteurColonnes As Byte
    For CompteurLignes = 1 To DerniereLigneTableau
    For CompteurColonnes=1 to Dernierecoltab
    MonTableau(CompteurLignes, CompteurColonnes) = _
    Cells(CompteurLignes + 1, CompteurColonnes)
    Next CompteurColonnes
    Next CompteurLignes
    End Sub
    0
  4. amine69500 Messages postés 471 Statut Membre 12
     
    c vrai desolé c'est des valeurs c'est une erreur de ma part, car mon vrai probleme c'est avec un tableau qui contient que des string, la je posé la question pour savoir juste la methode a utilisé et aprés l'appliquer a mon vrai probleme

    sinon mon tableau

    a1 c1 se sont les entetes du tableau

    le tableau contients que des string

    et ma fonction est composé de plusieurs variables c'est une dll créer sous c++ que j'appel depuis vba

    donc pour appliquer cette fonction il font lui donne les valeurs de ses variables
    et donc pour appliquer la fonction pour chaque ligne
    je souhaiterais créer une boucle qui li la ligne et applique la fonction

    pour chaque ligne

    mon code

    public function toto(a As string ,aAs string ,c As string) As string

    ....

    end function

    sub test()

    dim a as string
    dim b as string
    dim c as string

    ' pour l'instant j'arrive a lire que la 1 er ligne

    a = Feuil2.Range("A2").Value
    b = Feuil2.Range("B2").Value
    c = Feuil2.Range("C2).Value

    toto(a,b,c)

    end sub

    et ca marche super

    mais mon tableau contient plusieurs ligne

    merci

    cordialement
    0
    1. fais27 Messages postés 45 Statut Membre 1
       
      bonjour,
      si tu veux parcourir les valeurs d'une ligne

      public function toto() As string
      dim s as string
      derlig 'indice de la derniere ligne de ta plage range calculé plus haut
      dercol 'indice de la derniere colonne de ta plage range
      dim tab(derlig-1) as string 'si indice tab commence à 1 sinon derlig-2 si comm à 0
      for j=2 to derlig
      s="" 'initialiser le s
      for i=1 to dercol
      s=s+cells(j,i)
      next i
      toto=s 'pour chaque ligne
      tab(j-1)=s ' si tu veux creer un tab qui contient le resultat pour chaque ligne cad concatenation des valeurs de la ligne et si indice du tab commence à 1 sil commeence à 0 c j-2
      ceci est commentaire
      next j


      end function

      j'espere d'avoir pu t'aider
      cordialement
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. amine69500 Messages postés 471 Statut Membre 12
     
    Bonjour et merci de votre aide

    je vais faire ca et je vous tiens au courant

    cordialement
    0
    1. fais27 Messages postés 45 Statut Membre 1
       
      je vous en prie.
      0