[Excel] Somme spéciale

Résolu
Bonjour,

Je travaille actuellement sur un classeur excel.

Une de mes macros consiste à ajouter des colonnes avant une somme

Cette somme, je désire la reporter dans une autre feuille.

Mais comme je ne peux pas faire l'égalité de l'autre feuille puisque ce n'est pas tout le temps "A" comme nom de cellule.

Je connais en VBA la formule "Selection.End(xlToLeft).Select" ce qui me permettrait de faire la somme.

Comment pourrais-je utiliser ça dans une formule ?

Merci



--
Je suis juste de passage, Juste un petit aterrissage,
Je vais bientôt repartir, Vers l'Avenir

7 réponses

  1. Contributeur
    Bonsoir,

    en supposant que ta somme soit la dernière valeur de Feuil1 ligne 1 :
    =DECALER(Feuil1!A1;0;NBVAL(Feuil1!1:1)-1)

    eric
    0
    1. Bonsoir,

      La formule me renvoie à la première valeur. Est-ce normal ?

      Adrien

      0
      1. Contributeur
        non, mais elle suppose tes données en ligne, sans cellules vides.
        voir exemple
        Sinon déposer un fichier exemple sur cijoint.fr et coller ici le lien fourni pour voir ce qui est faisable.
        Et j'ai peut-etre mal compris ta question...
        eric
        0
    2. Bonjour,

      Ce serait possible qu'une formule prenne la première valeur en partant de la droite ? Comme ça, ce serait bien la dernière valeur.

      J'ai déjà fait ça en VBA avec la formule 'Selection.End(xltoleft).Select'

      Ce serait possible la même chose ? Car c'est vrai que certaines colonnes pourraient être vides.

      Merci,

      Adrien

      0
      1. Contributeur
        Bonjour,
        Tant qu'à faire une fonction pour trouver la dernière colonne, autant direct faire la fonction qui fait les deux.. Chercher la dernière colonne et la somme.
        Dans un module général (Module1) par exemple) coller le code ..
        Function Somme_Per(R As Range) As Integer
        Dim DerColonne As Integer
            With Sheets(R.Parent.Name)
            DerColonne = .Cells(R.Row, 256).End(xlToLeft).Column
            Somme_Per = Application.WorksheetFunction.Sum(.Range(.Cells(R.Row, 1), .Cells(R.Row, DerColonne)))
           End With
        End Function

        Dans la feuille (feuil2 par exemple) où il faut la somme mettre...
            =Somme_Per(Feuil1!A12)

        A12 représente une cellule qui est sur la ligne à calculer.
        A+
        0
        1. Re,

          Oui, mais si je veux utiliser un code vba, il interfère avec celui qui se lance à l'ouverture de la feuille d'origine, donc je ne peux pas copier la valeur...

          Non, il me faudrait une formule qui prend la première valeur en partant de la fin du classeur.

          Adrien

          0
          1. Contributeur
            Re,

            Tu peux très bien mixer plusieurs macros, le tout est de faire les bons tests pour qu'elles soient actives quand il faut.
            Sinon :
            =DECALER(Feuil1!A1;;MAX(SI(Feuil1!1:1="";0;COLONNE(Feuil1!1:1)))-1)
            formule matricielle à valider avec shift+ctrl+entrée

            eric
            0
            1. Re,

              J'ai essayé d'adapter la formule, mais je me demande si je ne l'ai pas mal fait.

              =DECALER('Ortho.Conju - 1'!A8;;MAX(SI('Ortho.Conju - 1'!1:1="";0;COLONNE('Ortho.Conju - 1'!8:8)))-1)

              J'ai peut-être mal adapté pour mes cellules et mes feuilles, il me retourne "0"

              Adrien

              0
              1. Contributeur
                =DECALER('Ortho.Conju - 1'!A8;;MAX(SI('Ortho.Conju - 1'!8:8="";0;COLONNE('Ortho.Conju - 1'!8:8)))-1)
                et si tu l'as bien validée avec shift+ctrl+entrée elle s'entoure de { }
                eric
                0
              2. ça m'indique que la formule que j'ai tapée a une erreur ... Pourtant, j'ai exactement la même que toi.

                Que ce passe-t-il ?

                Adrien
                0
              3. C'est bon, j'ai trouvé, merci à tous,

                Adrien
                0
              4. Contributeur
                ok :-)
                n'oublie pas de mettre en 'résolu' en haut alors...
                0