Vba :

Résolu
Bonjour,

Je souhaiterais avoir un renseignement. Dans une feuille excel, j'ai un tableau. Lorsque la personne remplit le formulaire, vba identifie deux cellules de ce tableau. Je souhaiterai connaître le code (si il existe) qui permet d'aditionner les valeurs des cellules comprises entre les deux cellules identifiées (qui se trouvent dans la même colonne).

Merci d'avance.
Configuration: Windows XP Internet Explorer 6.0

12 réponses

  • Votes
  • Date
  • Date décroissante
  1. voila ce que j'ai fait:
    'on estime que l'adresse de la cellule est donné en string (via un .adresse par exemple, ce qui donne une forme A1)
    
    Sub sumdifcel(debut As String, fin As String)' c'est une fonction
    
        Dim l_d As Integer
        Dim l_f As Integer
        Dim c As Integer
        Dim somme As Long
        With ActiveSheet
            l_d = .Range(debut).Row + 1
            l_f = .Range(fin).Row - 1
            c = .Range(debut).Column
            somme = 0
            For i = l_d To l_f
                somme = somme + .Cells(i, c).Value
            Next i
        End With
    sumdifcel=somme
    End Sub
    
    
    1. Sheet("Feuil1").cell("B1") = Sheet("Feuil1").cell("A1").value + Sheet("Feuil1").cell("A2").value

      bonne chance
      Artamos
      1. Salut,

        Pour additionner deux cellules sur excel, il faut que dans la troisième commencer par le signe =
        Ensuite, tu cliques sur une cellule que tu veux additionner + l'autre cellule. Puis tu fais entrée
        Exemple :
        =A1+A2
        Entrée
        Et tu as le résultat.

        Pour bloquer une cellule, suivant la colonne ou la ligne que tu veux additionner, tu fais f4 ou $ avant le code de la cellule.
        Exemple : =$A$1+ A2 → Entrée.

        J'espère avoir pu t'aider.
        1. il fait un script VBA, pas une formule a saisir dans une cellule =)
      2. En fait j'ai très mal expliqué mes besoins... Je suis désolé.

        Grâce au formulaire j'aurai deux cellules : (col_cib; lig_cibl1) ; (col_cib;lig_cibl2).

        J'aimerai savoir si il existe une procédure qui permet à chaque fois de faire un calcul qui multiplie ses deux cellules mais aussi chacune des cellules comprises entre celles-ci, par la valeur d'une cellule donnée.

        Si Lig_cibl1 = 2 et Lig_Cibl2 = 5

        (col_cibl ; Lig_cibl1) * A1
        (col-cibl ; 3) * A1
        (col-cibl ; 4) * A1
        (col-cilb ; Lig_cibl2) * A1

        Je ne sais pas si vous avez compris mais je cherche depuis un petit moment et mon esprit est un peu embué...
        1. En me relisant je ne me trouve pas très très clair... en fait ce que je voudrais c'est une formule vba remplacant plus ou moins tel quel le fameux : =Somme(A1:A12) .
          1. Modérateur
            Salut,
            Tu veux : une formule vba remplacant plus ou moins tel quel le fameux : =Somme(A1:A12)
            Voici :
            ActiveCell.Formula = "=SUM(A1:A12)"


            pour le reste, pas tout compris...
        2. Personne n'a donc d'idée sur comment Additionner un nombre indéterminé de cellules comprises entre deux cellules identifier à l'aide de variable ?
          1. je te rassure tu as été très clair et parfaitement compréhensible :)
            ta question c'est de faire la somme des valeurs des cellules qui se trouve entre 2 cellule donnée (par exemple entre A1 et A4 tu veu additionner A2 et A3)

            comment est identifié la cellule de début et celle de fin ?
            1. Les cellules de début et de fin sont trouvés grâce à un Userform qui recherche une valeur colonne (la même pour les deux cellules) et deux valeurs lignes (début et fin) contenus dans trois textbox.

              La colonne est trouvé par le type d'objet et les lignes pas l'entrée en stock et la sortie.
          2. de rien, je rectifie un truc: c'est pas .adresse mais .adress (ya un e en trop)
            1. Désolé de vous déranger de nouveau à ce sujet mais je ne réussis pas à adapter votre solution à mon outil... Je n'en peux plus, j'ai tenté de substituer d'autre procédure à celle-ci pour arriver à mes fins mais je n'y arrive pas , j'ai demandé conseil sur ce site, en vais et je suis très embêté car même si je m'y étais pris très tôt, je commence à me rapprocher dangereusement de la borderline...

              Si vous pouvier m'aider, je vous en serais très reconnaissant. Je vous copie la procédure dans laquelle doit s'inscrire le calcul de la somme des cellules comprise entre (c , l_d) et (c , l_f).

              Dim Z As Integer
              Dim l_d As Integer
              Dim l_f As Integer
              Dim c As Integer
              Dim somme As Long
              Dim cherche9 As String
              Dim cherche8 As String
              Dim cherche7 As String
              cherche9 = TextBox6.Value
              c = Feuil5.Cells.Find(what:=cherche9, LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlNext).Column
              cherche8 = TextBox4.Value
              l_d = Feuil5.Cells.Find(what:=cherche8, LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlNext).Row
              cherche7 = TextBox5.Value
              l_f = Feuil5.Cells.Find(what:=cherche7, LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlNext).Row

              Cette procédure se déclenche au click sur un commandbutton. J'espère vraiment que vous pourrez m'aider... merci d'avance
              1. Modérateur
                Salut,
                Tu as c pour colonne, l_d pour ligne de début et l_f pour ligne de fin et tu veux la somme dans une variable :

                somme = Application.WorksheetFunction.Sum(Range(Cells(l_d, c), Cells(l_f, c)))
                1. Merci beaucoup pijaku ! Pouvez vous me dire où je dois spécifier dans la formule, de quelle feuille excel sont les cells en question ?
                2. Modérateur
                  @UsgpaAch zo! En plus! Et après c'est tout?
                  Je plaisante.
                  Je pense que le plus sage dans ce cas serait de nous faire un petit wizzzzz :
                  With Sheets("Feuil18") 'en gras le nom de ta feuille
                  somme = Application.WorksheetFunction.Sum(.Range(.Cells(l_d, c), .Cells(l_f, c))) '!!! attention 
                  'les points sont hyper importants!!!!!
                  End With
                3. @pijakuPijaku ca marche !!! Merci infiniement, je ne sais pas comment te remercier. Tu me sauves vraiment !!!

                  Bonne soirée !!!
              2. Modérateur
                bonne soirée.
                La prochaine c'est toi qui m'aidera...
                EDIT : je suis arrivé en fin de parcours, le plus dur a été fait par d'autres, tu pourrais penser à eux!