IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

afficher un userform quand je double clique sur une cellule où un mot précis est ecrit


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 11
    Par défaut afficher un userform quand je double clique sur une cellule où un mot précis est ecrit
    Bonjour,

    j'ai besoin d'aide svp. j'aimerai que quand je clique sur une cellule de la colonne W et où c'est écrit "attente commande" qu'on m'affiche un userform pour passer commande.
    voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     
    If Not Application.Intersect(Target, Range("W18:W500")) Is Nothing Then
     
            If Target.Value = "attente commande" Then
            Cancel = True
            passer_commande.Show
            End If
     
     
    End If
    End Sub
    le userform ne s'affiche pas et j'ai une erreur : incompatibilité du type sur la ligne 3 du code

    Vous pouvez m'aider svp ?

    merci d'avance

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Plus simple pour ta ligne 3 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Target.Column = Range("W1").Column Then
    Cela dit, je trouve étrange que tu transfères la référence de cellule avec "ByVal"...
    Je n'en suis pas sûr mais il est probable que cette option transfère uniquement le contenu de la cellule et non sa référence.

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Je ne fais que passer en vitesse (mon esprit et mon corps sont actuellement mobilisés à d'autres fins) :
    deux causes possibles de l'erreur : -->>
    - soit "attente commande" est le résultat d'une formule (et c'est alors la propriété Text et non Value, qu'il faut utiliser
    - soit le message d'erreur concerne l'initialisation du userform (code à son appel) et non le code montré ici.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 242
    Par défaut
    Bonjour,

    Autre cause possible : ton double-clic s'effectue sur une plage de plusieurs cellules fusionnées.
    Dans ce cas, Target.Value renvoie un tableau, d'où l'incompatibilité de type avec une chaîne de caractères.
    Essaie alors avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Target.Cells(1).Value = "attente commande" Then

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 11
    Par défaut
    Bonjour tout le monde.
    à priori et comme zenpbb avait dit, c'était à cause d'un double click sur 2 cellules fusionnées.
    j'ai du juste changer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Target.Value = "attente commande" Then
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Target.Cells(1).Value = "attente commande" Then
    et ça à marcher.

    Merci pour votre aide

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 11
    Par défaut
    Bonjour,

    Je reviens vers vous encore une fois car mon code fonctionne mais pas pour toutes les cellules.
    ce que je cherche vraiment c'est de double cliquer sur n'importe quelle cellule de la colonne W où c'est écrit "attente commande" et que le formulaire s'affiche pour passer commande pour cette ligne précise.
    or il ne marche que pour la 1ere cellule (W18) de ma liste.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim i As Long
    For i = 18 To 10000
    b = Target.Row
     
    C = Target.Cells(i).Value
    d = Target.Column
    nom_onglet = Left(Range("C" & b), 31)
     
     
     
    If C = "attente commande" Then
     
     
    num_ligne = Application.Match(Worksheets("Reste à faire").Range("R" & b), Worksheets(nom_onglet).Range("A1:A39"), 0)
    quantity = ThisWorkbook.Worksheets(nom_onglet).Range("I" & num_ligne)
    lib = ThisWorkbook.Worksheets(nom_onglet).Range("E3")
    code = ThisWorkbook.Worksheets(nom_onglet).Range("E" & num_ligne)
     
     
      Load passer_commande
      passer_commande.code_ki.Caption = Range("B" & b)
      passer_commande.libelle_operation.Caption = lib
      passer_commande.code_SAP.Caption = code
      passer_commande.libelle_PLV.Caption = Range("R" & b)
      passer_commande.quantite.Caption = quantity
     
      passer_commande.Show
     
    End If
     
    Next
    End sub
    j'ai besoin encore une fois de votre aide !
    Merci d'avance

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 10/11/2012, 01h07
  2. Savoir quand on clique sur une cellule
    Par Emilien P. dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 17/12/2010, 22h20
  3. Message d'erreur quand je double clique sur ma clé usb
    Par nourouissiakou dans le forum Windows XP
    Réponses: 6
    Dernier message: 25/11/2009, 19h57
  4. si on double clique sur une cellule, un "X" apparait
    Par rsoul dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/06/2008, 18h19
  5. Associer un clique et un double clique sur une listebox
    Par mcdonald dans le forum Tkinter
    Réponses: 3
    Dernier message: 10/06/2006, 17h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo