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 :

Remplir Bon de Commande Depuis Combobox activex


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 13
    Par défaut Remplir Bon de Commande Depuis Combobox activex
    Bonjour à Tous

    SVP j'ai besoin d'aide

    j'archive les commandes que je fais depuis la "feuille commande" dans la "feuille historique_cde"

    je voudrais qu' a la sélection du combobox n° de commande qui se trouve dans la "feuille commande" ,
    pouvoir récupérer les infos correspondantes dans la feuille historique et les mettre dans la feuille commande .


    j'ai bibouiller quelques lignes de code mais j'y arrive pas
    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
    34
    35
    36
    37
    Dim f As Worksheet, sh As Worksheet
    Dim Plage As Range
    Dim Lr As Long
     
    Set f = Sheets("Historique_Cde")
    Set sh = Sheets("Commande")
    Set Plage = f.Range("A" & f.Range("H" & Rows.Count).End(xlUp).Row)
    Lr = f.Range("A" & Rows.Count).End(xlUp).Row
     
    ' Effacer les valeurs si existe
     
    sh.Range("c6:c7").ClearContents
    sh.Range("f12:f30").ClearContents
     
    sh.Range("f5:f7").ClearContents
    'MsgBox sh.Range("c5").Value
     
    For Each c In Plage
        If ComboBox2.Value = sh.Range("c5").Value Then
     
            For i = 12 To 30
               sh.Cells(2, i).Value = f.Range("B" & Lr).Value
               sh.Cells(3, i).Value = f.Range("C" & Lr).Value
               sh.Cells(4, i).Value = f.Range("D" & Lr).Value
               sh.Cells(5, i).Value = f.Range("E" & Lr).Value
               sh.Cells(6, i).Value = f.Range("F" & Lr).Value
     
     
            Next i
     
        End If
    Next c
     
    Set f = Nothing
    Set sh = Nothing
    Set Plage = Nothing
    End Sub
    Merci d'avance pour vos contributions.
    je met en PJ une copie du fichier
    cordialement
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 507
    Par défaut
    Bonjour,
    Le fichier fournis est-il définitif ou bien c'est juste un test pour le forum ?
    Il demande une refonte assez conséquente; aux niveaux des tableaux.
    Jean-Paul sous Office 365 et Windows 10/11 (Intel I7 16Go)

    Si vous avez trouvé réponse à votre question penser à la passer en :resolu: Vous avez aimé la discussion alors un :plusser: fait toujours plaisir.
    Le savoir n'a de valeur que s'il est partagé.
    La vérité de demain se nourrit de l'erreur d'hier. Antoine de Saint-Exupéry

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 13
    Par défaut
    Citation Envoyé par Valtrase Voir le message
    Bonjour,
    Le fichier fournis est-il définitif ou bien c'est juste un test pour le forum ?
    Il demande une refonte assez conséquente; aux niveaux des tableaux.
    Bonjour Valtrase

    le fichier n'est pas definitif. c'est un fichier test

  4. #4
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 411
    Par défaut
    Bonjour,

    Une façon de faire exploitant les tableaux structurés:
    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
    Sub RepriseCommande(Cde As String)
        Dim CdeArray As Variant, ArtArray As Variant, QteArray As Variant
        Dim r As Range, i As Long, j As Long
        If MsgBox("Vider la commande actuelle et reprendre celle choisie?", vbYesNo + vbDefaultButton2, "Oui/non") = vbNo Then Exit Sub
        Range("C6:C7,D3:F5,C12:D30").ClearContents
        Set r = Range("tHisto[N° Cde]").Find(What:=Cde, LookAt:=xlWhole)
        Range("C6") = r
        Range("C7") = r.Offset(0, -6)
        Range("D3") = r.Offset(0, -4)
        CdeArray = Range("tHisto[N° Cde]").Value        ' récupère les valeurs dans un tableau 2D (1 colonne)
        ArtArray = Range("tHisto[Désignation]").Value   ' récupère les valeurs dans un tableau 2D (1 colonne)
        QteArray = Range("tHisto[Qté]").Value           ' récupère les valeurs dans un tableau 2D (1 colonne)
        j = 1
        For i = LBound(CdeArray, 1) To UBound(CdeArray, 1)    ' boucle sur les lignes du tableau
            If CdeArray(i, 1) = Cde Then                      ' CdeArray(i, 1) correspond à la cellule de la i-ème ligne, 1ère colonne
                Range("C" & 11 + j) = ArtArray(i, 1)
                Range("D" & 11 + j) = QteArray(i, 1)
                j = j + 1
            End If
        Next i
    End Sub
    En attaché, une version avec quelques modifications, juste là pour donner quelques idées,
    Bonne continuation.
    Fichiers attachés Fichiers attachés

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 13
    Par défaut
    Citation Envoyé par EricDgn Voir le message
    Bonjour,

    Une façon de faire exploitant les tableaux structurés:
    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
    Sub RepriseCommande(Cde As String)
        Dim CdeArray As Variant, ArtArray As Variant, QteArray As Variant
        Dim r As Range, i As Long, j As Long
        If MsgBox("Vider la commande actuelle et reprendre celle choisie?", vbYesNo + vbDefaultButton2, "Oui/non") = vbNo Then Exit Sub
        Range("C6:C7,D3:F5,C12:D30").ClearContents
        Set r = Range("tHisto[N° Cde]").Find(What:=Cde, LookAt:=xlWhole)
        Range("C6") = r
        Range("C7") = r.Offset(0, -6)
        Range("D3") = r.Offset(0, -4)
        CdeArray = Range("tHisto[N° Cde]").Value        ' récupère les valeurs dans un tableau 2D (1 colonne)
        ArtArray = Range("tHisto[Désignation]").Value   ' récupère les valeurs dans un tableau 2D (1 colonne)
        QteArray = Range("tHisto[Qté]").Value           ' récupère les valeurs dans un tableau 2D (1 colonne)
        j = 1
        For i = LBound(CdeArray, 1) To UBound(CdeArray, 1)    ' boucle sur les lignes du tableau
            If CdeArray(i, 1) = Cde Then                      ' CdeArray(i, 1) correspond à la cellule de la i-ème ligne, 1ère colonne
                Range("C" & 11 + j) = ArtArray(i, 1)
                Range("D" & 11 + j) = QteArray(i, 1)
                j = j + 1
            End If
        Next i
    End Sub
    En attaché, une version avec quelques modifications, juste là pour donner quelques idées,
    Bonne continuation.

    Merci EricDgn pour ta reponse.
    Je la teste et je te reviens

Discussions similaires

  1. [V8] Impossible de créer une facture depuis un bon de commande
    Par Afrikanovic85 dans le forum Odoo (ex-OpenERP)
    Réponses: 0
    Dernier message: 16/09/2016, 20h31
  2. [XL-2000] Remplir un bon de commande depuis un tableau de pièces
    Par jenovas21 dans le forum Excel
    Réponses: 2
    Dernier message: 28/05/2010, 15h29
  3. [VBA-E]Automatisation d'un bon de commande
    Par Lexot2 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 06/10/2006, 12h17
  4. [MySQL] Clients n'ayant pas commandé depuis n mois
    Par sdelaunay dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 08/07/2006, 13h26
  5. Réponses: 7
    Dernier message: 27/03/2006, 13h34

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