Clic sur cellule pour ouvrir formulaire

Bonjour à tous,

J'ai ces quelques lignes pour afficher un userform1 lorsque que je clique sur la cellule "A13".

Je souhaiterais lancer le userform que si "A13" est vide.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    '("A13")
    If Target.Address(0, 0) = "A13" Then UserForm1.Show
End Sub

Merci pour votre aide et bonne journée à tous.

Bonjour

Essayez comme ceci

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("A13")) Is Nothing Then
    If Range("A13") = vbNullString Then
        Load Userform1
        Userform1.Show
    End If
End If
End Sub

Si ok -->

cordialement

Bonjour Dan,

Merci pour ta réactivité mais l'avant dernier End If est en rouge donc impossible d’exécuter le code.

Par contre en faisant ainsi, j'arrive au résultat mais je suppose qu'elle peut être améliorée.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Range("A13") <> "" Then Exit Sub
    If Target.Address(0, 0) = "A13" Then UserForm1.Show
End Sub

Et le problème c'est que je dois le reproduire sur plusieurs cellules en dessous.

D'avance merci pour ton aide.

Bonjour

Merci pour ta réactivité mais l'avant dernier End If est en rouge donc impossible d’exécuter le code.

Le problème est ailleurs et pas dans ce que je vous ai proposé. Eventuellement si vous avez fait un copier-coller du code, mettez toutes les lignes alignées à gauche.

Par contre si on se base sur la sélection de la cellule, vous pouvez changer la première ligne par ceci -->Private Sub Worksheet_SelectionChange(ByVal Target As Range). Ce que vous aviez dans votre code d'ailleurs

Et le problème c'est que je dois le reproduire sur plusieurs cellules en dessous.

Quelles sont les cellules concernées ?

Re,

Ok pour les précisions. J'ai repris le code en insérant Selection et cela fonctionne.

Pour poursuivre le sujet, je dois reproduire cela 20 fois des cellules "A13:A32" où je lance une formulaire ayant la même structure mais dont les données s’insère à la ligne correspondante cela fera 20 userform pour 20 lignes.

Je joins une ébauche du fichier anonymiser que je tente de faire.

Re,

cela fera 20 userform pour 20 lignes.

20 userforms ???
Pourquoi avez-vous besoin de 20 userforms si elles sont toutes identiques ?

Une seule peut suffire non ?

RE,

Certainement que oui, mais ce sera trop compliqué pour moi, j'ai déjà du mal à comprendre en totalité votre petit bout de code.

Je ne maitrise pas trop VBA, donc je fais avec mes petites connaissances en faisant un peu de plagiat et j'essaye d'adapter à mes cas de figure.

Merci

re,

Certainement que oui, mais ce sera trop compliqué pour moi,

Non du tout. ce sera très simple au contraire


bon je vais vous donner ce qu'il faut modifier, mais avant j'ai besoin de comprendre comment vous fonctionnez :
1. dans l'userform vous masquez votre combobox par une textbox. Pouvez-vous expliquer l'idée que vous suivez ?
Peut-être que vous envisagez de pouvoir ouvrir l'userform sans cliquer en colonne A entre A13 et A32 ?

2. ensuite, dans votre fichier deux options
- vous cliquez sur A13, l'userform ne se charge pas
- vous cliquez sur A14 (qui est vide) votre userform se charge

Correct cela ?

3. code Private Sub CmdInserer_Click()
Pourquoi mentionnez-vous la ligne 13 sachant que l'userform ne va pas s'ouvrir en cas de click sur une valeur en colonne A qui est différente de vide.
L'idée n'est-elle pas de remplir la ligne vide cette feuille Facture depuis l'userform

Merci de répondre point par point. Après je vous donne ce qui est à modifier

Désolé pour le retard, j’avais tapé directement mon laïus sur le site mais lors de l’envoi Erreur 404, tout à refaire. Donc j’ai pris soin de le faire en dehors du site. LOL

Avant de rentrer dans le vif du sujet, une petite présentation de cette facture qui est destiné à un ami.

Cette facture est créée en début du mois pour les 4 ou 5 semaines à venir. Ce qui explique les BL1, BL2 et suivants.

BL pour bordereau de livraison. Dans mon idée, je voulais que sur chaque cellule à partir de A13 jusqu'à A32 en cliquant sur la cellule, un formulaire s'affiche pour saisir le produit si la cellule est vide ainsi que le poids en BL1 ou sinon juste saisir les poids en fonction des semaines suivantes. Suivant les semaines suivantes des produits peuvent être ajouter dans la cellule vide de la colonne A jusqu'à A32.

1. dans l'userform vous masquez votre combobox par une textbox. Pouvez-vous expliquer l'idée que vous suivez ?

Peut-être que vous envisagez de pouvoir ouvrir l'userform sans cliquer en colonne A entre A13 et A32 ?

La présence du TextBox est que je ne savais pas comment récupérer la valeur présente en A13 dans le ComboBox même si au départ elle est vide et qu'en semaine 2 il y aura une donnée. Je pensais bien faire pour les cellules suivantes A14, A15 etc...

Il peut être envisager de charger le Userform au lancement de la facture en semaine 1 pour les semaines suivantes c'est moins évident ou utile. Je ne sais pas.

2. ensuite, dans votre fichier deux options

- vous cliquez sur A13, l'userform ne se charge pas

- vous cliquez sur A14 (qui est vide) votre userform se charge

Correct cela ?

Tout cela est correct et je ne m'en suis pas rendu compte. En vidant la cellule A13, puis clic sur A14 et à nouveau sur A13, là mon userform s'affiche, à y rien comprendre.

3. code Private Sub CmdInserer_Click()

Pourquoi mentionnez-vous la ligne 13 sachant que l'userform ne va pas s'ouvrir en cas de click sur une valeur en colonne A qui est différente de vide.

L'idée n'est-elle pas de remplir la ligne vide cette feuille Facture depuis l'userform

Oui et non, je cherchais et testais sur la A13 donc votre remarque est judicieuse sur la A13 mais peut-être pas sur les suivantes qui peuvent être vides.

Merci de répondre point par point. Après je vous donne ce qui est à modifier

Si vous pouviez commenter votre travail, cela me permettra peut-être de le comprendre.

D’avance merci pour le coup de main.

J'ai légèrement modifié le fichier joint notamment sur la feuille FACTURE.

Désolé pour le retard, j’avais tapé directement mon laïus sur le site mais lors de l’envoi Erreur 404, tout à refaire.

Si vous restez trop longtemps, le site ferme l'accès. Il faut donc vérifier que vous êtes toujours connecté avant l'envoi. Sinon vous perdez tout ce que vous avez préparé.


Merci de vos explications. Cela ne devrait pas changer trop ce que je vous ai préparé

Pour résumer si click en colonne A,

- Si Ax est vide on affiche l'userform
- Si Ax est rempli mais qu'un des BL1 à BL5 est vide, on affiche l'userform avec les données des BL qui sont déjà complétés pour cette ligne

Exemple dans votre dernier fichier :
- click sur A13, on affiche l'USF avec les données des A13, BL1 et BL2 en ligne 13
- click sur A14, on affiche l'USF avec les données A14 et BL1 en ligne 14
- click sur A15, on affiche l'USF avec les données A15 et BL2 en ligne 15
- click sur A16, on affiche l'USF vide puisque pas de BL complétés
La combobox est bien entendu toujours remplie de la liste telle que définie en feuille Tarif

Suis-je dans le bon par rapport à ce que vous voulez faire ?

Petite question supplémentaire : A quoi correspondent les chiffres dans les BL, ce sont des montants ?

Re,

Vous avez parfaitement résumé mon approche du projet. Je suis curieux et impatient de voir ce que vous avez en préparation pour le tester sur la vrai facture mais y a pas d'urgence.

Concernant les données dans les différentes cellules BL, il s'agit du poids livré pour chaque BL.

Je pense que nous avons fait le tour.

A + et encore merci pour le temps passé

Bonne soirée

Bonjour

A ce stade, soit je vous envoie le fichier avec toutes les modifications ou je vous explique quoi faire pour que vous fassiez les changements par vous-même pas à pas. Dites moi

....pour le tester sur la vrai facture mais y a pas d'urgence

Votre fichier posté est identique d'un point de vue feuille, données de lignes et colonnes ?

re, et bonjour à tous...

Oups pour le fichier ce n'était pas le bon. Je suis pas sur place pour vous le renvoyer et je ne pense pas que cela change grand chose.

Je suis ok pour que vous me renvoyez le fichier pour le consulter et l'étudier dans le week-end et peut être vous demander quelques précisions au cas où.

Encore merci pour le temps passé.

A+

re,

Oups pour le fichier ce n'était pas le bon. Je suis pas sur place pour vous le renvoyer et je ne pense pas que cela change grand chose.

Bah ce serait mieux d'avoir le bon fichier sans quoi on risque de devoir tout refaire.

Qu'est-ce qui le différencie de celui posté ?
Sinon je vous poste cela cette après midi

Re,

Juste la mise en forme des cellules, où alors je vous l'avez déjà envoyé, mais cela ne change rien dans sa structure ou conception.

Votre fichier en retour avec les modifications suivantes :

- Adaptation des codes dans la feuille facture et dans l'USF
- Dans l'USF, suppression de la "textboxcom" et des instructions Select (à éviter) qui, dans votre cas, sont de trop puisque lorsque vous ouvrez l'USF c'est toujours depuis la feuille Facture.
- Supprimé l'USF2. Il n'y a besoin que d'une seule USF
- Ajout d'un module pour déclaration d'une variable "lig". Cette variable prendra la valeur de la ligne lors du click en colonne A et permettra au code de savoir ce que l'on doit charger dans l'USF (soit rien, soit des données existantes).

Faites quelques tests en cliquant dans les cellules de la colonne A et cliquez sur le bouton Insérer pour confirmer les valeurs ou changements

Suggestions : remplacez le nom du bouton "Inserer" par "Valider" et le bouton Annuler par "Quitter"

A votre dispo pour explication si besoin

Si ok et terminé ->

Cordialement

Merci pour vos bons conseils, notamment les bouton et le select..

J'en profiterai pour revoir mes codes car j'utilise souvent le select et je me mélange les neurones alors que je me trouve sur la feuille. (merci pour vos remarques et suggestions)

Pas d'ordinateur sous la main mais demain je m'y colle et je ne manquerai de vous faire un retour.

Je n'oublierai pas non plus de signaler si mon cas est résolu. A très bientôt et bon codage.

Re,

Je viens de tester le fichier.

Déjà, je ne pensais pas qu'il fallait si peu de lignes pour arriver au résultat.

Petit problème. je ne peux saisir que des nombres entiers ou avec une virgule. Impossible d'utiliser le point du clavier numérique.

Le bout de code pour remplacer la frappe "." par ",".

Private Sub TextBox1_AfterUpdate() 'Mise à jour du TextBox et au format
TextBox1.Value = Format(Replace(TextBox1.Text, ".", ","))
End Sub

Y a t il moyen d'éviter de répéter cinq fois le code ci-dessus. Dans l'absolu ce n'est pas dérangeant mais au regard du bout de code créer dans le module, je me suis dis pourquoi pas. En attendant, je vais tester tout cela sur l'original.

re,

Petit problème. je ne peux saisir que des nombres entiers ou avec une virgule. Impossible d'utiliser le point du clavier numérique.

Y a t il moyen d'éviter de répéter cinq fois le code ci-dessus.

Pas sûr d'avoir bien compris.
Pourquoi vous est-il impossible d'utiliser le point ?
Si par exemple j'entre dans une textbox 1,52, j'ai 1.52 dans la textbox

Deux solutions sont possibles. Soit vous faites 1 code par textbox ou on ajoute quelques lignes dans le code inserer

Dites-moi

Rechercher des sujets similaires à "clic ouvrir formulaire"