Donner une valeur a une variable et la stocker dans un tablo

Bonjour,

Je ne suis pas un pro de vba et je sollicite donc votre aide pour un fichief excel que j'essaie de mettre sur pieds pour mon boulot.

Je vous explique.

Exemple,en A1 jai une liste déroulante me proposant plusieurs variables (x, y, z...)

En A2 j'indique une valeur.

J'aimerai attribuer la valeur de A2 à la variable en A1 et la stocker dans un tableau présent sur une autre feuille afin de réaliser differents totaux.

Sachant également qu'une variable peut apparaître plusieurs fois et avoir une valeur différente à chaque fois. (Ex:x=34, y=21, z=6, y=7, etc....)

Tableau feuille suivante:

Valeur de x:34

Valeur de y: 21, 7

Valeur de z: 6

Etc....

Merci beaucoup pour votre aide!

Flo


(Liste deroulante pour choix de variable je maitrise, mais je sollicite votre aide pour l'attribution des valeurs aux variables et le stockage dans le tableau...)

Bonsoir Flo, bonsoir le forum,

Si j'ai bien compris ton problème, une proposition dans le fichier en pièce jointe avec le code ci-dessous :

Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet

If Target.Address = "$A$1" Then 'condition 1 : si la cellule éditée est A1
    If Target = "" Then 'condition 2 : si A1 est effacée
        Target.Offset(1, 0).Value = "" 'efface A2
    Else 'sinon
        Target.Offset(1, 0).Value = "" 'efface A2
        Target.Offset(1, 0).Select 'sélectionne A2
    End If 'fin de la condition 2
End If 'fin de la condition 1
If Target.Address = "$A$2" And Range("A1") <> "" Then 'condition : si la cellule éditée est A2
    With Sheets("Feuil2") 'prend en compte l'onglet "Feuil2"
        'place la valeur de A2 dans la première ligne vide de la colonne de la variable,
        .Cells(Application.Rows.Count, .Rows(1).Find(Range("A1").Value, , _
           xlValues, xlWhole).Column).End(xlUp).Offset(1, 0).Value = Target.Value
    End With 'fin de la prise en compte de l'onglet "Feuil2"
End If 'fin de la condition
End Sub

Dans l'onglet Feuil1, choisis la variable en A1, définis sa valeur en A2, elle sera stockée dans le tableau en Feuil2...

29flo-v01.xlsm (18.80 Ko)

Bonsoir ThauThème

Merci beaucoup! C'est super sympa de m'avoir aidé. Cependant, la contrainte que j'ai sur ce fichier, c'est que je dois conserver visible ce que je fais. Je m'explique:

Je choisis en A1 la variable (x, y ou Z ou autre...), je mets sa valeur en B1 (que je stocke ensuite sur la feuille 2, donc ça c'est nikel), mais ensuite je n'efface pas la ligne, je passe en A2 pour la deuxième variable dont la valeur sera mise en B2, etc...

Est-ce possible?

Merci beaucoup!

Flo


(Je viens de me rendre compte que sur mon premier message je m'étais trompé, Je tappe la valeur de la valeur de la variable en B1, et non en A2, je fonctionne en fait par ligne)

Bonsoir Flo, bonsoir le forum,

En pièce jointe ton fichier modifié avec le code adapté ci-dessous :

Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
Dim COL As Byte 'déclare la variable COL (COLonne)

If Target.Cells.Count > 1 Then Exit Sub 'si plusieurs cellules sélectionnées, sort de la procédure
If Target.Column = 1 Then 'condition 1 : si la cellule éditée est en colonne 1 (=A)
    If Target = "" Then 'condition 2 : si la cellule est effacée
        Target.Offset(0, 1).Value = "" 'efface la cellule en colonne B
    Else 'sinon
        Target.Offset(0, 1).Value = "" 'efface la cellule en colonne B
        Target.Offset(0, 1).Select 'sélectionne la cellule en colonne B
    End If 'fin de la condition 2
    Exit Sub 'sort de la procédure
End If 'fin de la condition 1
'condition : si la cellule éditée est en colonne 2 (=B) et que la cellule en colonne 1 (=A) n'est pas vide
If Target.Column = 2 And Target.Offset(0, -1).Value <> "" Then
    With Sheets("Feuil2") 'prend en compte l'onglet "Feuil2"
        'place la valeur de la cellule en colonne 2 (=B) dans la première ligne vide de la colonne de la variable,
        .Cells(Application.Rows.Count, .Rows(1).Find(Target.Offset(0, -1).Value, , _
           xlValues, xlWhole).Column).End(xlUp).Offset(1, 0).Value = Target.Value
    End With 'fin de la prise en compte de l'onglet "Feuil2"
    Target.Offset(1, -1).Select 'sélectione la cellule en colonne 1 (=A) de la ligne en dessous
End If 'fin de la condition
End Sub

Mais je ne comprends pas l'intérêt de conserver deux fois l'historique des variables. Dans l'onglet Feuil1 et dans l'onglet Feuil2...

19flo-v02.xlsm (19.90 Ko)

Merci Thauthème

Alors, n'étant pas un pro d'excel, je vais tenter d'expliquer ce que je veux faire.

Sur la première feuille,j'ai besoin d'attribuer des valeurs à quelques variables, et sur un autre onglet, être capable de faire le total des valeurs attribuées à chaque variable.

Je pensais qu'il était indispensable, dans un premier temps, de les regrouper dans un tableau comme tu me l'as fait dans les 2 exemples.

Ma question: Si je liste l'ensemble de mes saisies en feuill1, est-il possible, dans une autre feuille de savoir le total des valeurs pour X, Y, Z au autre... (sachant que les saisies sont aléatoires, et qu'une des variables peut ne jamais être saisie, et que les variables peuvent aussi être saisie plusieurs fois et avoir une valeur différentes à chaque fois, x=34, puis x=45, et indiquer le total de x=34+45=89 dans une autre feuille)

Si oui, comment fait-on sans repasser par un tableau comme présent sur les 2 exemples?

Si quelqu'un peu m'aider.

Merci d'avance!

Bonsoir Flo, bonsoir le forum,

Pas besoin de VBA dans ce cas. Une Formule Somme.Si fait tout aussi bien l'affaire... Regarde la version 3 de ton fichier en pièce jointe. Les formules sont dans l'onglet Feuil2 dans la plage A2:C2.

25flo-v03.xlsx (10.84 Ko)

C'est exactement ce que je voulais!

Merci beaucoup!

@ bientôt!

Rechercher des sujets similaires à "donner valeur variable stocker tablo"