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 :

RechercheV sous condition en VBA [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien d'usinage
    Inscrit en
    Juillet 2017
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien d'usinage

    Informations forums :
    Inscription : Juillet 2017
    Messages : 132
    Par défaut RechercheV sous condition en VBA
    Bonjour à tous !

    Merci par avance de votre aide !

    Je vous explique mon problème,

    J'ai une liste d'article avec plusieurs quantité, fournisseur, prix.

    Par exemple pour ce qui ne veulent pas télécharger le fichier,

    A B C D
    N°d'article Quantité Fournisseur Prix / U
    Ord1010-1 3 0010 25€
    Ord1010-1 1 0052 30€
    Ord1010-1 5 0064 20€
    Ord2020-1 5 0021 15€
    Ord2020-1 3 0064 20€
    Ord2020-1 1 0010 35€

    Il y a 3 fois le même articles dans la colonne A, mais la colonne B,C,D sont différente !

    J'ai créé un userform comme ceci

    Nom : Capture.PNG
Affichages : 323
Taille : 7,9 Ko

    Dans la première colonne après " Quantité par 1 : " j'aimerais avoir le prix et la seconde colonne le fournisseur

    J'aimerais quand je tape le numéro d'article j'aimerais que les 3 articles se range correctement dans l'userform

    Si vous avez des questions n'hésitez pas,

    Merci encore par avance de votre aide

    Cordialement
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Il faudrait gérer l'évènement Exit sur la zone de texte correspondant au code article.

    Cet évènement génèrerait l'alimentation des zones de textes (ou peut être libellés (label)) correspondantes.
    Pour ce faire, on peut envisager la création de 3 types de variables prédéfinies.

    Par exemple, pour la quantité 1

    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
    Option Explicit
     
    Public Type Q1
            fournisseur As String
            prix As Integer
     End Type
     
    Public Function karac(codarticle As String) As Q1
     
    Dim derligne As Long
    Dim i As Long
     
    With Worksheets(1)
            derligne = .Cells(.Rows.Count, 1).End(xlUp).Row
            For i = 1 To derligne
                    If .Cells(i, 1) = codarticle And .Cells(i, 2) = 1 Then
                            With karac
                                    .fournisseur = Cells(i, 3).Value
                                    .prix = Cells(i, 4).Value
                            End With
                    End If
            Next i
    End With
    End Function
     
    Sub essai_q1()
    Debug.Print karac("Ord1010-1").fournisseur
    'Retourne 52
    Debug.Print karac("Ord1010-1").prix
    'Retourne 30
    End Sub
    Ainsi, les 2 premiers contrôles retourneraient les 2 éléments de la fonction "karac" affectée à la zone de texte code article

    Idem pour les types Q2 et Q3.

    Certes, on pourrait créer un seul type pour les 3 quantités. Mais voilà l'idée.

    A mon avis, ce processus procurerait une certaine souplesse d'utilisation.

  3. #3
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Une variante pour les 3 quantités en une seule déclaration.
    La quantité est intégrée à la fonction.

    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
    Option Explicit
     
    Public Type four_prix
            fournisseur As String
            prix As Integer
     End Type
     
    Public Function karac(codarticle As String, quot As Byte) As four_prix
     
    Dim derligne As Long
    Dim i As Long
     
    With Worksheets(1)
            derligne = .Cells(.Rows.Count, 1).End(xlUp).Row
            For i = 1 To derligne
                    If .Cells(i, 1) = codarticle And .Cells(i, 2) = quot Then
                            With karac
                                    .fournisseur = Cells(i, 3).Value
                                    .prix = Cells(i, 4).Value
                            End With
                    End If
            Next i
    End With
    End Function
    Ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print karac("Ord1010-1", 1).fournisseur
    Retourne 52
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print karac("Ord1010-1", 5).prix
    Retourne 20

  4. #4
    Membre confirmé
    Homme Profil pro
    Technicien d'usinage
    Inscrit en
    Juillet 2017
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien d'usinage

    Informations forums :
    Inscription : Juillet 2017
    Messages : 132
    Par défaut
    Merci de ta réponse,

    Je débute dans le VBA, mais je ne sais pas trop ou mettre le code,


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Option Explicit
     
    Public Type four_prix
            fournisseur As String
            prix As Integer
     End Type
    Ceci tout en haut du module ?

    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
    Public Function karac(codarticle As String, quot As Byte) As four_prix
     
    Dim derligne As Long
    Dim i As Long
     
    With Worksheets(1)
            derligne = .Cells(.Rows.Count, 1).End(xlUp).Row
            For i = 1 To derligne
                    If .Cells(i, 1) = codarticle And .Cells(i, 2) = quot Then
                            With karac
                                    .fournisseur = Cells(i, 3).Value
                                    .prix = Cells(i, 4).Value
                            End With
                    End If
            Next i
    End With
    End Function
    Ceci dans le TextBox Numéro d'article en évènement Exit ?


    Merci de ton aide,

    Cordialement

  5. #5
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut,

    Avant tout, mieux vaut, pour toi, comprendre la démarche soumise.
    Pour ce faire, tu peux consulter le tutoriel de Silkyroad au sujet des variables.

    Ceci dans le TextBox Numéro d'article en évènement Exit ?
    Tout le code que je t'ai soumis (le plus récent) sera intégré à un module standard.

    Comme je te l'ai signifié, c'est l'évènement Exit de la Textbox relatif au code article qui génèrera l'information des 6 TextBox
    Ceci en considérant les 3 valeurs 1,3 et 5 pour la fonction.

    Exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Txt_CodeArticle_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Txt_fournisseur_1.Text = karac(Txt_CodeArticle.Text, 1).fournisseur
    Txt_prix_5.Text = karac(Txt_CodeArticle.Text, 5).prix
    'etc...
    End Sub
    S'il s'agit de labels, alors c'est leur propriété Caption qu'il faudra modifier. A voir.

    Je te laisse adapter avant de te proposer une boucle pour ce code.

    Au préalable, prends bien garde, comme toujours, à bien nommer les contrôles, comme je l'ai fait
    1 - Préfixe Txt(ou Lb)
    2 - Nature de l'information (fournisseur, prix)
    3 - Indice (1,3,5)
    Ainsi les noms de contrôles seront Txt_fournisseur_1, Txt_prix_5, etc
    (ou Lb_...)

    Cette précaution est fondamentale si l'on souhaite procéder par boucle.

  6. #6
    Membre confirmé
    Homme Profil pro
    Technicien d'usinage
    Inscrit en
    Juillet 2017
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien d'usinage

    Informations forums :
    Inscription : Juillet 2017
    Messages : 132
    Par défaut
    Merci pour ton aide !

    J'ai compris le principe en lisant le tuto !
    tout fonctionne !


    Problème résolu !

    Merci beaucoup

    Cordialement

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

Discussions similaires

  1. remplissage de cellule sous condition en vba
    Par cbredeche dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/03/2016, 17h54
  2. [XL-2013] Extraire d'un tableau vers un autre sous condition en VBA
    Par mkhbeldi dans le forum Excel
    Réponses: 2
    Dernier message: 28/05/2015, 09h12
  3. [VBA-E] Copier coller sous conditions de couleur
    Par titeZ dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 10/04/2007, 18h27
  4. [VBA-E]executer "du code" sous conditions
    Par Echizen1 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/06/2006, 20h02
  5. [VBA-E]feuille créée sous condition
    Par Angel79 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/02/2006, 15h11

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