Vba :

Résolu
Usgpa -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
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

  1. garion28 Messages postés 1545 Date d'inscription   Statut Membre Dernière intervention   408
     
    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
  2. Artamos Messages postés 184 Statut Membre 16
     
    Sheet("Feuil1").cell("B1") = Sheet("Feuil1").cell("A1").value + Sheet("Feuil1").cell("A2").value

    bonne chance
    Artamos
    0
  3. alaryk Messages postés 94 Statut Membre 37
     
    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.
    0
    1. Artamos Messages postés 184 Statut Membre 16
       
      il fait un script VBA, pas une formule a saisir dans une cellule =)
      0
  4. Usgpa
     
    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é...
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Usgpa
     
    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) .
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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...
      0
  7. Usgpa
     
    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 ?
    0
  8. garion28 Messages postés 1545 Date d'inscription   Statut Membre Dernière intervention   408
     
    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 ?
    0
    1. Usgpa
       
      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.
      0
  9. Usgpa
     
    Merci beaucoup Garion !!! Bonne soirée à vous !
    0
  10. garion28 Messages postés 1545 Date d'inscription   Statut Membre Dernière intervention   408
     
    de rien, je rectifie un truc: c'est pas .adresse mais .adress (ya un e en trop)
    0
  11. Usgpa
     
    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
    0
  12. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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)))
    0
    1. Usgpa
       
      Merci beaucoup pijaku ! Pouvez vous me dire où je dois spécifier dans la formule, de quelle feuille excel sont les cells en question ?
      0
      1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773 > Usgpa
         
        Ach 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
        0
      2. Usgpa > pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Pijaku ca marche !!! Merci infiniement, je ne sais pas comment te remercier. Tu me sauves vraiment !!!

        Bonne soirée !!!
        0
  13. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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!
    0