Afficher un résultat immédiatement après avoir effectué l'opération

J'ai créé une interface de gestion des stocks, mais je suis embêtée: sur cette interface, se situent les cases"Rechercher", "Entrée" et "Sortie", et "Ajouter". Lorsque je souhaite ajouter une valeur à un composant, je recherche ce composant sur "Rechercher", puis j'entre le supplément dans "Entrée" et enfin je valide avec "Ajouter". Or, pour qu'il m'affiche le résultat mis à jour, je dois rechercher le composant sur "Rechercher". J'aimerais qu'il me le mette à jour automatiquement dès que j'ai cliqué sur "Ajouter".

Voici le code:

Sub AjouterValeur()

'C'est la fonction pour ajouter des valeurs

'Principe : Il compare les différents onglets avec la recherche, si ça correspond il ajoute les valeurs rentrées aux cases correspondantes dans l'onglet

Dim MaRecherche

Dim Entree

Dim Sortie

Dim Prix

Dim Emplacement

Dim Annee

Dim TestAnnee

Dim k

Dim Ws As Worksheet

Dim c As Range

Dim Message As String, firstAddress As String

MaRecherche = form.search.Value

'Ici on traite l'année, il ajoute 1 à k à chaque année suprérieure à 2016 (2016 ets la référence)

k = 0

Annee = Year(Date)

TestAnnee = 2016

While Annee <> TestAnnee

TestAnnee = TestAnnee + 1

k = k + 1

Wend

j = 0

If form.nbremontee = 1 Then

For Each Ws In Worksheets

With Ws

Set c = .Columns("B:D").Find(What:=MaRecherche, LookIn:=xlValues, LookAt:=xlPart)

If Not c Is Nothing Then

c.Offset(0, 3).Value = Date

'Ici on regarde si il y a plusiseurs remontées dans le même onglets, si oui on change de fonction

If Ws.Name = "TSD Vernant & Lac" Or Ws.Name = "Tapis Pré & Michalet" Or Ws.Name = "TK Forêt & Ballacha MONTAZ" Or Ws.Name = "TK Veret & Aujon POMA" Or Ws.Name = "TK Bois & Stade MONTAZ" Or Ws.Name = "TK Lapiaz & G.Grenier & Gers" Then

form2.ComboBox1 = Ws.Name

form3.Show

Exit Sub

Else

firstAddress = c.Address

Do

If c.Column = 2 Then

Entree = form.nouventree.Value

Sortie = form.nouvsortie.Value

Prix = form.nouvprix.Value

Emplacement = form.nouvadresse.Value

If Not Entree = "" Then

c.Offset(0, 7).Value = c.Offset(0, 7).Value + Entree

Else

c.Offset(0, 7).Value = c.Offset(0, 7).Value

End If

If Not Sortie = "" Then

If Ws.Name = "Roulements" Or Ws.Name = "Bandages&pneus" Or Ws.Name = "Lubrifiants" Then 'Ici on regarde si on travaille sur bandages/roulements ou pas, si oui on change de fonction

form4.Show

Unload form2

Exit Sub

Else

c.Offset(0, 11 + k).Value = c.Offset(0, 11 + k).Value + Sortie

End If

Else

c.Offset(0, 11 + k).Value = c.Offset(0, 11 + k).Value

End If

If Not Prix = "" Then

c.Offset(0, 5).Value = Prix

c.Offset(0, 4).Value = Date

Else

c.Offset(0, 5).Value = c.Offset(0, 5).Value

Prix = c.Offset(0, 5).Value

End If

If Not Emplacement = "" Then

c.Offset(0, 1).Value = Emplacement

Else

Emplacement = c.Offset(0, 1).Value

End If

Message6 = Message6 & c.Offset(0, 7).Value & vbCrLf

Message7 = Message7 & c.Offset(0, 8).Value & vbCrLf

Message8 = Message8 & c.Offset(0, 5).Value & vbCrLf

End If

Set c = .Columns("B:D").FindNext(c)

Loop While Not c Is Nothing And c.Address <> firstAddress

result_nok = ""

End If

End If

End With

Next Ws

MsgBox ("C'est ajouté")

Else

form2.Show

Exit Sub

End If

'Ici on remet les valeurs à 0 ou on modifie avec ce qu'on a ajouté

form.result4 = Emplacement

'messge6 ou messge7 correspond à la valeur de Qté'

form.result6 = Message6

form.result7 = Message7

form.result8 = Prix

form.nouventree.Value = 0

form.nouvsortie.Value = 0

form.nouvprix.Value = ""

form.nouvadresse.Value = ""

End Sub

Le problème si situerait à la fin, au niveau du MsgBox "C'est ajouté". Je suppose qu'il faudrait un "Show", mais la méthode "Show" ne me permet pas d'afficher une valeur (ici, c.Offset(0,7).Value ou c.Offset(0,11+k).Value) car elle ne peut afficher que des objets.

merci d'avance!

Bonjour Dorothée et bienvenue sur le Forum,

Sans fichier Excel c'est plus compliqué de pourvoir t'aider, mais si j'ai bien compris, tu a un UserForm qui te permet de rechercher et ajouter/modifier une liste de stock ?

Tu peux afficher les résultats d'un stock dans plusieurs TextBox et les modifier en changeant le contenue d'un TextBox puis en cliquant sur Ajouter?

Sauf, que ton problème est qu'une fois que tu a cliquer sur Ajouter, tes TextBox ne prennent pas directement les valeurs que tu a mis à jour et tu est obligé de procéder à une nouvelle recherche pour sa ?

Autant de question qu'on ne se poserai pas si nous avions le fichier :p

Bonjour,

Tout d'abords, indentes ton code il en sera plus lisible, pour le poster, utilises les balises code (bouton </> puis tu colles le code entre les balises en faisant attention à ne pas supprimer un crochet)

et pour éviter que nous ayons à créer un classeur de test, postes une copie de ton fichier après l'avoir anonymiser si il doit l'être, les noms et prénoms peuvent éventuellement rester mais pas les adresses réelles, pas les numéros de téléphone réels et pas les éventuelles données confidentielles. Pour que tu n'ai pas par la suite à trop modifier le code qu'un intervenant aura posté, le fichier exemple sera le plus conforme possible au fichier original

Bonjour et merci pour vos réponses.

Je joins mon fichier excel (le code est 2017). La recherche d'une référence s'effectue à partir de l'onglet "Recherche" (première page) puis sur "cliquer ici pour rechercher".

Le souci réside dans le fait que l'opération qui permet d'obtenir "Quantité" est effectuée via une formule sur le tableau excel, alors que les opérations qui permettent d'obtenir "Entrée" et "Sortie" (ainsi que "Prix" et "Adresse" ) sont effectuées dans la macro qui s'intitule "AjouterValeur". Ainsi, les valeurs de "Entrée", "Sortie", ainsi que "Prix" et "Adresse" s'affichent instantanément, tandis que la valeur de "Quantité" nécessite d'actualiser avec le bouton "Rechercher".

Je me demande si c'est possible que la nouvelle Quantité s'affiche aussi instantanément, ou pas (comme elle est calculée à partir des nouvelles entrées et sorties).

Encore merci!

Bonjour,

Voici mes tentatives de code pour résoudre le problème . J'ai décidé de créer une nouvelle variable Quantité. Pour trouver sa valeur initiale, je dois trouver la ligne de la référence recherchée intitulée "MaRecherche", puis je me reporte à la colonne K pour trouver la valeur du stock. Ensuite, j'effectue des opérations sur "Quantité" en additionnant ou soustrayant les valeurs de "Entrée" et "Sortie".

Tentative 1:

  'Dim o As Object
                     'Set o = Worksheets(Ws.Name).Range("B4:B900").Find(MaRecherche)
                      'je recherche la référence correspondant à MaRecherche dans la colonne correspondante'
                     'Dim therow As Integer
                     'therow = o.Row
                     'Quantite = Range("Ktherow").Value
                     'Il semble que cette écriture ne convienne  pas car la méthode Range ne peut lire que une lettre puis un nombre; peut-être que le problème vient de là ' 
                     

Tentative 2:

 
                     'x = Cells.Find(MaRecherche.Value).Row
                    ' Quantite = Range("Kx:Kx").Value 'Encore une fois la méthode Range pose problème
                     

Voilà mes avancements peu fructueux

Rechercher des sujets similaires à "afficher resultat immediatement effectue operation"