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

supertotof78 Messages postés 9 Statut Membre -  
supertotof78 Messages postés 9 Statut Membre -
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

12 réponses

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

    0
  2. supertotof78 Messages postés 9 Statut Membre
     
    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
  3. supertotof78 Messages postés 9 Statut Membre
     
    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
  4. supertotof78 Messages postés 9 Statut Membre
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour à tous

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

    Cdlmnt
    0
  7. supertotof78 Messages postés 9 Statut Membre
     
    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
  8. supertotof78 Messages postés 9 Statut Membre
     
    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
  9. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
  10. supertotof78 Messages postés 9 Statut Membre
     
    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
  11. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
  12. supertotof78 Messages postés 9 Statut Membre
     
    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
  13. supertotof78 Messages postés 9 Statut Membre
     
    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