Saisie clavier sous VBA

Bonjour à toutes et à tous,

Un problème simple pour vous sans doute mais encore sans solution pour moi :

Par programmation VBA, je propose à l'utilisateur la feuille visible dans le fichier joint (ultra simple).

Je veux :

1) que l'utilisateur, à l'affichage de cette feuille, puisse mettre des croix dans les cellules Cx correspondant aux jours qui lui conviennent.

2) que mon programme VBA puisse récupérer ces données pour en faire un certain traitement.

Voilà, c'est tout pour le moment

https://www.excel-pratique.com/~files/doc2/Z0LLIForum.xls

9demo-bonvin.xlsx (9.23 Ko)

Bonjour,

Voilà, c'est tout pour le moment

Oui mais je sens que ce n'est pas assez...

Point 1 --> Mets ce code dans la feuille 1 en VBA

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'Macro par Dan pour Pelerin
If Not Application.Intersect(Target, Range("C2:C9")) Is Nothing Then
Target = "X"
Cancel = True
End If
End Sub

Doule click dans la cellule pour mettre X

Point 2 --> récupérer quoi ?

Amicalement

Dan

Merci Nad Dan,

Bien sûr, ça fonctionne . . .

C'est la même méthode que celle que tu m'avais déjà proposée pour que mon classeur s'ouvre sur une feuille spécifique, mais je n'avais pas réussi à "décrypter" le code.

1) Peux tu me traduire pas à pas (pour que je comprenne bien) le code :

If Not Application.Intersect(Target, Range("C2:C9")) Is Nothing Then

Cancel = True

Et si l'utilisateur doit saisir du texte ou bien des chiffres, que devient le "Target" ?

2) Pour la suite de ma question, je t'explique la cinématique que j'ai retenue pour que ce soit clair :

a) mon programme met en forme le tableau dans la feuille 1

b) je passe la main à l'utilisateur pour qu'il saisisse ses "croix" (pour cela, je sors de ma procédure)

c) une fois que l'utilisateur à fini de saisir ses "croix" il faut que je les récupère pour savoir qu'il s'intéresse à mardi et jeudi.

Comment je fais puisque je suis sorti de ma procédure et que je ne sais pas quand l'utilisateur a terminé sa saisie . . .

Note : Pour l'instant ma logique VBA (élémentaire) fonctionne ainsi :

Procédure A

  • -- Call Procédure B
  • -- Fin Procédure B
  • -- Call Procédure C
  • -- Fin Procédure C
  • -- Call Procédure D
  • -- Fin Procédure D

Fin Procédure A

Je ne sais pas faire autrement, mais je sens que c'est dans la façon d'enchaîner les procédures que bien des choses peuvent se jouer !

re,

1) Peux tu me traduire pas à pas (pour que je comprenne bien) le code :

En gros, si tu cliques dans les cellules C2 à C9, la cellule dans laquelle tu as cliqué (Target) te mets un X.

Si tu clique ailleurs, le code se déclenche aussi mais le IF n'est pas exécuté puisque tu es en dehors de la plage C2 à C9.

Comment je fais puisque je suis sorti de ma procédure et que je ne sais pas quand l'utilisateur a terminé sa saisie

Ton classeur est en mode partagé ? Vous travaillez à plusieurs en même temps ?

Pour le point 2, le mieux serait d'avoir un fichier explicatif pour comprendre ce que l'on doit récupérer et où.

A te relire

Dan

Pour Nad Dan,

Non, mon classeur n'est pas en mode partagé et il n'y aura qu'un seul utilisateur.

mes fichiers ne sont pas encore faits ni les procédures, mais en gros :

Dans la feuille 1 :

1) je fournis à l'utilisateur l'agenda du mois

2) il y mentionnera (colonnes C5 à C35) le nombre de personnes prévues pour travailler dans chaque journée

3) dans une autre feuille, il saisira des opérations à réaliser dans chaque journée (date / type d'opération / temps de l'opération) le temps de ces opérations étant à diviser par le nombre de personnes présentes dans chaque journée.

Donc :

1) Procédure de préparation / présentation de l'agenda sur feuille 1

2) Passer la main à l'utilisateur pour qu'il "complète" cet agenda

3) Reprendre la main pour proposer une feuille 2 à l'utilisateur sur laquelle il saisira " Date / Type Opération / Temps "

4) reprendre la main pour faire des calculs à partir de données se trouvant sur Feuille 1 et Feuille 2.

Le tout peut-il s'enchaîner automatiquement ? :

re,

Le tout peut-il s'enchaîner automatiquement ? :

Probablement, oui. reste à voir comment ton fichier sera réalisé.

Amicalement

Dan

Bonjour Nad Dan,

Pour (peut-être) clore le fil, j'aimerais te transmettre un fichier pour que tu examines la solution que j'ai trouvée pour enchaîner mes traitements :

1) Programme VBA qui met en forme un calendrier et le propose à l'utilisateur

2) L'utilisateur saisit les jours fériés

3) une fois cette saisie terminé, enchaînement automatique sur un retour vers la page d'accueil.

Ca n'a rien de génial mais ça marche.

Je voudrais simplement que tu me dises si on peut faire plus simple et mieux (certainement)

Mais :

Mon fichier, (même réduit à sa plus simple expression), fait 200 Ko et je n'ai pas de programme de compression / décompression. De plus je ne saurai pas le faire marcher.

Que puis-je donc faire ?

Question subsidiaire : Pourquoi, lorsque je visualise le contenu de mon projet, alors que j'ai moins de10 procédures VBA m'indique t-il plus de 40 modules ?

Bonsoir à tous,

Pour gagner sur le poids du fichier,

1) Regroupe tes macros et supprime les modules non utilisés

2) Regarde ce lien, qui fait le ménage

https://www.excel-pratique.com/forum/viewtopic.php?t=4627

Amicalement

Claude.

merci à tous,

C'est OK

Merci pour la macro "Ménage"

Rechercher des sujets similaires à "saisie clavier vba"