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 -
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
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:
- Donner une valeur à une cellule en saisissant ses coordonnées
- Coordonnées gps - Guide
- Comment saisir une adresse url - Guide
- Aller à la ligne dans une cellule excel - Guide
- Bloquer une cellule excel - Guide
- Excel remplir automatiquement une cellule en fonction d'une autre ✓ - Forum Excel
12 réponses
Bonjour,
On comprendra certainement mieux si vous mettez le fichier correspondant sur https://www.cjoint.com/ et poster le lien.
On comprendra certainement mieux si vous mettez le fichier correspondant sur https://www.cjoint.com/ et poster le lien.
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
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
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...
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...
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
C'est clairement plus élaboré que ma solution (qui fonctionne cependant).
Je vais me pencher sur tout ça.
Cordialement,
Christophe
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,
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,
Bonjour
Essaies comme ça (préciser la feuille à traiter)
Cdlmnt
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
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...
Je n'ai plus de message d'erreur, par contre, mon onglet Recap n'est plus verrouillé après la saisie...
Bien sûr, il te faut la reprotéger en fin de procédure
Cdlmnt
...
Next c
Sheets("Recap").Protect Password:="Cariste"
End Sub
Cdlmnt
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.
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.
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:
Ne fonctionne pas...
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...