Reporter valeur de doublon différents

Bonjour à tous,

je suis dans le batiment, et je réalise un tableau personnel où j’aimerais réaliser la chose suivante:

mon tableau se présente de cette manière:

Capture d’écran 2023-09-25 201350

Ce que je voudrais faire c’est qu’à chaque fois qu’une désignation est tapé, et quelle est égale à une autre désignation de la meme colonne, la valeur du PU qui sera indiqué est automatiquement remplie.

Exemple:

Je tape dans désignation « peinture murs » et j’indique un montant PU de 25. Je voudrais que la prochaine fois que je tape « peinture murs » dans la colonne désignation le montant 25 se met automatiquement.
Et cela, pour n’importe quelle désignation qui serait taper plusieurs fois.
Je précise également que la valeur de PU peut changer tout le temps, et donc changer les autres valeurs en meme temps.

Etant novice en excel, cela me parait trés compliqué, il est toujours temps d’apprendre.

Merci de vos réponses.

Bonjour,
avec votre fichier Excel (anonymiser) il serait plus simple de travail qu’avec une capture d’écran
en rajoutant éventuellement quelques données du résultat attendu

Bonsoir,
Vous avez quelle version ? 365 ?

Bonjour,

oui 365 professionnel plus 2021

Bonjour,

ci joint une premier approche.

Sur ce que j’ai compris de votre demande et de faire la somme total avec les memes désignations

Salutations

Nouveau Feuille de calcul Microsoft Excel.xlsx (26,4 Ko)

la colonne O est une colonne auxiliaire pour ajouter vos PU. Il y a 2 MFC, le rouge pour indiquer que ce n’est pas la première apparition de cette désignation, donc ce PU sert à rien et le vert pour indiquer que c’est la première apparition, mais il n’y a pas encore un PU.
Puis en colonne D, des formules qui recherchent leur PU dans colonne O.
Nouveau Feuille de calcul Microsoft Excel (4).xlsx (32,6 Ko)

Bonjour,

Tout d’abord de votre implacation.

Monsieur Cow18,

c’est presque cela, sauf que vous avez mis dans la colonne O des montants fixe.
Or, les montants diffèrent tout le temps, et je ne peux pas faire un tableau avec toutes les valeurs jusqu’à 100 000 ou plus.
Il faut qu’il prenne automatiquement la valeur que j’ai entrée dans PU pour la reporter automatiquement.

Monsieur JOHNNY,

Le report ce fait dans la colonne Total HT ce qui empeche le calcul de QUANTITE * PU.
Il faudrait que le report ce fasse dans la colonne PU.

Objectif:
si je tape dans A12 remplacement porte, quantité 1, pu 250, total ht va etre de 250.
si je tape dans A43 (par exemple) remplacement porte; quantité 2; il faut qu’il cherche si j’ai deja taper la meme chose dans A et qu’il reporte le 250 dans D43; et toal ht serait donc de 500.

ce que vous demandez n’est pas possible, soit la colonne D contient des chiffres fixes soit ce sont des formules, mais ne pas un mélange.
Ce que vous demandez, on peut faire cela avec des macros (VBA).
Si la colonne O est occupée, on peut prendre la colonne X(?).

1 « J'aime »

Bonsoir,

a dommage. Je n’ai plus qu’à trouver une autre solution.
Non c’est pas un soucis la colonne O, X ou une autre. c’était une question de pratique afin d’armoniser le chiffrage suivant la personne qui l’utilise.

Je vous remercie en tout cas pour vos réponses.

les macros sont permis ?

Bonjour,

oui tout est permis tant que j’arrive à ce résultat.

Meme si je connais pas les macros ^^

Nouveau Feuille de calcul Microsoft Excel (5).xlsm (43,4 Ko)

Bonjour Cow18

un grand merci à toi c’est ca !! peux tu m’expliquer comment tu as fait ?

stp

re,
en 2 mots, cela n’est pas possible :partying_face:
vous pouvez trouver cette macro dans le module de la feuille « Batiment »
Quand vous modifiez quelque chose dans la colonne A ou D (entre les lignes 11-…), la macro fait son boulot, vérifier s’on a déjà des lignes avec cette designation, des prix, etc

Private Sub Worksheet_Change(ByVal Target As Range)
     Dim cD, cPU, Dict, c, c1, UN As Range
     Set cD = Range("Désignation")
     Set cPU = Range("PU")

     Set c = Intersect(Target, Union(cPU, cD))
     If c Is Nothing Then Exit Sub
     If c.Cells.Count > 1 Then MsgBox "plusieurs cellules sont modifiées en même temps, sorry": Exit Sub

     Set Dict = CreateObject("scripting.dictionary")     'dictionaie avec les prix uniques de cette désignation
     Set c1 = c.Offset(, -c.Column + cD.Column)     'désignation de cette ligne
     Set c2 = c.Offset(, -c.Column + cPU.Column)     'prix de cette ligne
     If c1.Value <> "" Then
          For i = 1 To cD.Rows.Count
               If cD.Cells(i, 1).Row <> c.Row And StrComp(cD.Cells(i, 1).Value, c1.Value, 1) = 0 Then
                    Set UN = Union(IIf(UN Is Nothing, cPU(i, 1), UN), cPU(i, 1))     'toutes les cellules avec la même désignation
                    If cPU(i, 1) <> "" Then Dict(cPU.Cells(i, 1).Value) = Dict(cPU.Cells(i, 1).Value)
               End If
          Next
     End If
    ' If Not UN Is Nothing Then MsgBox UN.Address

     On Error GoTo Erreur:
     Application.EnableEvents = False

     If c.Column = cD.Column Then            'changement de désignation
          If Dict.Count = 0 Then             'aucun prix connu
               c2.ClearContents              'vider,on peut rien faire
          ElseIf Dict.Count = 1 Then         'un prix unique connu
               c2.Value = Dict.keys()(0)     'assigner ce prix unique
          Else                               'changement du prix
               MsgBox Join(Dict.keys, vbLf) & vbLf & vbLf & "choississez un", vbInformation, UCase("plusieurs prix connu pour ") & c1.Value
          End If

     Else                                    'changement du prix
          If c2.Value <> "" Then
               If Not UN Is Nothing Then UN.Value = c2.Value     'le reste s'adapte au nouveau prix
               s = "": If Not UN Is Nothing Then s = vbLf & "cellules similaires = " & UN.Address(0, 0)
               If Dict.Count Then MsgBox "nouveau prix " & Format(c2.Value, "0.00€") & vbLf & "ancien était " & Format(Dict.keys()(0), "0.00€") & s, vbInformation, UCase("Désignation :  " & c1.Value)
          End If
     End If

Erreur:
     Application.EnableEvents = True

End Sub

On a la plage nommée « PU » qui réfère a E11:E76 pour le moment. Bon, il faut modifier cela en I11:I76
image

Ok, je vois ou c’est merci.
Peut on rajouter une ligne qui indique que le 0 ne compte pas.

Parce que du coup si une ligne comporte un 0 il me dit de choisir entre 0 et la 2e valeur.

Desolé je t’embête mais à l’utilisation du coup je paufine le fonctionnement.

bonsoir,
2 petits modifs dans la macro, mais comme votre nouvelle colonne « PU » est la colonne I, je pense que vous devez copier & coller cette macro dans votre fichier.
Nouveau Feuille de calcul Microsoft Excel (5) (1).xlsm (43,6 Ko)

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.