Donner une valeur à une cellule en saisissant ses coordonnées

supertotof78 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -  
supertotof78 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Voilà, je suis amené régulièrement à utiliser Excel pour les besoins de mon travail. Pour se faire, je "bricole" un peu en VBA, mais là, je tombe sur un os (sûrement pour pas grand chose).

Le projet:
Je souhaite que nos caristes saisissent leurs mouvements de stock: "Je rentre 3 pièces de la référence r1 dans l'emplacement B3".

Pour se faire, je souhaite faire un fichier à 2 onglets:
1 onglet = matrice avec les références en ligne et les emplacements en colonne
1 onglet = page de saisie.

Dans la page de saisie, le cariste sélectionnera une référence, un emplacement et une quantité. Le but: A chaque fois qu'il validera sa saisie (via un bouton par exemple), la quantité soit ajouter à la valeur contenue dans la cellule dans le tableau matrice (aux coordonnées référence x emplacement).



1ère étape:
Interpréter les coordonnées de la cellule cible à partir de l'onglet de saisie

Je saisis la référence de ma pièce en B3 et l'emplacement en C3
Je saisis ma quantité en B12
Ma matrice (avec intitulés) se trouve sur E4:I7 avec des références "r1 à r3" et des emplacements "A1, A2, B1, B2"

Dans un premier temps, j'ai demandé à ressortir les coordonnées en B8 avec la formule suivante:
=ADRESSE(EQUIV(B3;E5:E7;0)+4; EQUIV(C3;F4:I4;0)+5)

Donc, si je saisis "r3" à l'emplacement "A2", La cellule B8 me retourne bien $G$7

2ème étape:
La valeur saisie en B12 vient s'ajouter à celle en $G$7 à la validation de la saisie.
Là, je sèche. J'ai essayé plusieurs choses, mais rien ne fonctionne.


Dans l'attente de vos avis éclairés.

A+
Christophe
A voir également:

12 réponses

Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
On comprendra certainement mieux si vous mettez le fichier correspondant sur https://www.cjoint.com/ et poster le lien.

0
supertotof78 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

Oui, voici:
http://www.cjoint.com/c/FBbquACvdDE

Il s'agit là d'un test, rien de définitif. Donc, j'ai 3 champs de saisie:
En B3, je saisis une référence (r1, r2 ou r3)
En C3, je saisis un emplacement (A1, A2, B1 ou B2)
En B12 je saisis une valeur.

Excel détermine les coordonnées de la cellule cible en B8.

Je voudrai, qu'en appuyant sur un bouton, le contenu de B12 soit additionné au contenu de la cellule dont les coordonnées sont affichées en B8.

Cordialement,
Christophe
0
supertotof78 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai essayé une solution simple (parfois ça marche...) pour créer un bouton.
Mais je sais que ma syntaxe ne va pas:

Sub Boutonvalider()
'
' Boutonvalider Macro

'

'
Dim Cible As String
Cible = Worksheets("Feuil1").Range("B8").Value
Worksheets("Feuil1").Range("Cible").Value = Worksheets("Feuil1").Range("B12").Value

Range("B3").Select

End Sub

C'est mon Range("Cible") qui ne va pas, mais je ne pratique pas assez et j'ai oublié certains trucs...
0
supertotof78 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Bon, je me réponds à moi même. :)

Ca avance.

J'ai modifié mon fichier:
En C8 et C9, j'affiche le numéro de ligne (=EQUIV(B3;E5:E7;0)+4) et le numéro de colonne (=EQUIV(C3;F4:I4;0)+5).

Du coup, ma macro fonctionne:
Sub Boutonvalider()
'
' Boutonvalider Macro

'

'
Worksheets("Feuil1").Cells(Range("C8").Value, Range("C9").Value).Value = Worksheets("Feuil1").Range("B12").Value
Range("B3").Select

End Sub

Désolé cjoint.com bug, je n'arrive pas a charger mon nouveau fichier. Mais avec les infos ci-dessus, cela fonctionne.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Bonjour à tous

Un essai
http://www.cjoint.com/c/FBbutekNw8I

Cdlmnt
0
supertotof78 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour cette réponse fructueuse.

C'est clairement plus élaboré que ma solution (qui fonctionne cependant).

Je vais me pencher sur tout ça.

Cordialement,
Christophe
0
supertotof78 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour à tous.

Je reviens ici un peu tardivement car manque de temps pour travailler sur le projet.

Voici une démo de ce que cela pourrait donner:
http://www.cjoint.com/c/FBsisX2XrGE

Le cariste a juste à renseigner son nom, le reste des infos s'affiche automatiquement.

Ensuite, il doit sélectionner un type d'activité puis cliquer sur ok.
S'il sélectionne mvt de stock, il est dirigé sur l'onglet de saisie référence, emplacement et quantité.

Tout cela fonctionne.

Chaque validation par le bouton ok incrémente l'onglet Recap. Afin d'éviter tout erreur de manip et de garder la main sur l'historique des mvt de stock, j'ai protégé cette feuille: Elle ne se déverrouille qu'au moment où on clique sur "OK" pour saisir les infos sur l'onglet accueil puis se reverrouille.

J'ai utilisé une solution qui fonctionne très bien sur un autre de mes projets, mais ici, j'ai droit à:

Erreur d’exécution '1004':
Impossible de définir la propriété Locked de la classe Range.

Pourtant, en cliquant sur fin, le verrouillage est fonctionnel.

Si quelqu'un a une idée?

Cordialement,
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Bonjour

Essaies comme ça (préciser la feuille à traiter)

Private Sub Workbook_Open()
Dim c As Range
Sheets("Recap").Unprotect Password:="Cariste" ', userinterfaceonly:=True
For Each c In Sheets("Recap").Range("B1:I300")
If c.Value <> "" Then c.Locked = True Else c.Locked = False
Next c
End Sub

Cdlmnt
0
supertotof78 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour ton aide.

Je n'ai plus de message d'erreur, par contre, mon onglet Recap n'est plus verrouillé après la saisie...
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Bien sûr, il te faut la reprotéger en fin de procédure
...
Next c
Sheets("Recap").Protect Password:="Cariste"
End Sub


Cdlmnt
0
supertotof78 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Bonsoir,

Non, car dans ce cas, j'ai de nouveau:
Erreur d’exécution '1004':
Impossible de définir la propriété Locked de la classe Range.

Ce qui est curieux, c'est que ce code fonctionne très bien sur une autre de mes fichiers.
0
supertotof78 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Je bute sur un autre problème également:

J'ai créé un onglet de synthèse devant récapituler tous les mouvements de chaque emplacement.

En gros, à chaque validation de mouvement, j'ajoute la dernière saisie dans cette matrice de synthèse appelée Bilanmatrice.

En gros, je veux: Bilanmatrice = Bilanmatrice + matrice

Biensur, le code:
Worksheets("Bilanmatrice").Range("B2:E4").Value = Worksheets("Bilanmatrice").Range("B2:E4").Value + Worksheets("Matrice").Range("B2:E4").Value


Ne fonctionne pas...
0