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 :

Demande conseil pour élaboration code Vba [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué Avatar de Vba14
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2019
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2019
    Messages : 440
    Points : 147
    Points
    147
    Par défaut Demande conseil pour élaboration code Vba
    Bonjour à tous,

    Avec l'aide ce forum, j'ai pu mettre en place ce code qui me permet d'alimenter un tableau se trouvant dans la feuille "Articles". Mais j'en ai 5 autres à remplir.

    D'où une petite série de question afin d'optimiser mes codes et de ne pas me retrouver avec un code de 3 pages.

    1 - Est-ce que je peux déclarer mes variables de cette façon ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim MonArticle As ListRow, MesClients As ListRow, MaCommande As ListRow, MonFournisseur As ListRow, MonLivre As ListRow, MesVentes As ListRow
    Ou bien suis-je obligé de mettre un Dim devant chacune des variables ?

    Le code ci-dessous va être à peu-près similaire pour le remplissage de mes tableaux,

    2 - Est-il possible de faire quelque chose de plus court ou bien dois-je mettre les 6 codes bout à bout ?

    3 - Est-ce que je peux mettre toutes ces déclarations les unes en-dessous des autres ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Set MonArticle = Sheets("Articles").ListObjects(1).ListRows.Add
    Set MesClients = Sheets("Clients").ListObjects(1).ListRows.Add
    etc...
    Le même bouton de validation sert à toutes les pages.

    Merci par avance pour vos conseils.

    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
     
    Private Sub Bouton1_Click()
    Dim MonArticle As ListRow
    Application.ScreenUpdating = False
     
        Set MonArticle = Sheets("Articles").ListObjects(1).ListRows.Add
     
        'On ajoute les articles au tableau de la feuille "Articles"
     
        With MonArticle
     
        .Range(1, 1) = Me.Label_NumArticle.Caption
        .Range(1, 3) = Me.Combo_Fourni
        .Range(1, 4) = Me.Txt_DesignArticle
        .Range(1, 5) = Me.Txt_DescripArticle
        .Range(1, 6) = CDbl(Me.Txt_PriAchHT)
        .Range(1, 7) = Me.Combo_TVA
        .Range(1, 8) = CInt(Me.Txt_Nombre)
        .Range(1, 11) = CInt(Me.Txt_StoMini)
        .Range(1, 13) = "Active"
     
        End With
     
        Set MonArticle = Nothing
     
    Sheets("Données").Range("C4") = Sheets("Données").Range("C4") + 1
     
    Me.Combo_Fourni = ""
    Me.Txt_DesignArticle = ""
    Me.Txt_DescripArticle = ""
    Me.Txt_PriAchHT = ""
    Me.Combo_TVA = ""
    Me.Txt_Nombre = ""
    Me.Txt_StoMini = ""
     
    Application.ScreenUpdating = True
    End Sub
    Le savoir est le plus intellectuel des virus, dommage qu'il ne soit pas très contagieux.
    Adrien Verschaere
    Étudiant, France, 1997

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 661
    Points : 5 784
    Points
    5 784
    Par défaut
    Bonjour,

    Citation Envoyé par Vba14 Voir le message
    1 - Est-ce que je peux déclarer mes variables de cette façon ?
    oui

    Le code ci-dessous va être à peu-près similaire pour le remplissage de mes tableaux,

    2 - Est-il possible de faire quelque chose de plus court ou bien dois-je mettre les 6 codes bout à bout ?
    Tout dépend de ce "à peu-près similaire"
    Une boucle est envisageable mais il faudrait que tu fournisse plus de détail sur les différences
    3 - Est-ce que je peux mettre toutes ces déclarations les unes en-dessous des autres ?
    oui
    J'aimerais bien aller vivre en Théorie, car en Théorie tout se passe bien.

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2017
    Messages
    529
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2017
    Messages : 529
    Points : 324
    Points
    324
    Par défaut
    Bonjour a vous cher ami,

    Il n'y a aucun probleme de déclaré vos variable comme ce que vous avez mentionné. Perso, je n'aime pas car c'Est moins esthétique et moins visuel mais il n'y a vraiment pas de probleme . Si vous ne mettez pas de "as listrow" , VBA va définir la variable comme variant. DOnc votre façon de faire est parfaite


    Pour la question 2, je ne sais vraiment pas, je ne peux vous aider sur celle-là


    Pour la question 3, oui bien sur si l'élément que vous setter est déjà présent. Par exemple, je ne peux faire de set sur une plage ou un élément qui va etre crée plus tard. DOnc dans votre cas je présume que tous les éléments sont déjà présent donc oui



    en espérant le tout pouvant vous aidez

  4. #4
    Membre habitué Avatar de Vba14
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2019
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2019
    Messages : 440
    Points : 147
    Points
    147
    Par défaut
    Bonjour jpvba, Bonjour halaster08,

    jpvba, merci d'avoir répondu en partie à mes questions. Je vais avancer en attendant.
    Très cordialement
    Vba14

    halaster08, merci pour ta réponse
    A part des noms de contrôles qui changent et les cellules de mes tableaux, la procédure est identique s’agissant de remplir un tableau dans une feuille de calcul.
    Très cordialement
    Vba14
    Le savoir est le plus intellectuel des virus, dommage qu'il ne soit pas très contagieux.
    Adrien Verschaere
    Étudiant, France, 1997

  5. #5
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2019
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Fonction Si VBA
    Bonjour, je souhaite inclu une fonction SI dans une macro que j’essaye de créer. Je suis débutant dans ce domaine, ma question :

    Je souhaite convertir cette fonction en vba :

    SI (P2<>0;*“Ok*”;*““) et tirer ma formule jusqu’à la fin de la colonne À et faire un tri par la colonne P.

    Merci d’avance pour votre aide.

  6. #6
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour Amazigg
    Que vient faire ta question dans la présente discussion avec laqueelle elle n'a rien à voir ?
    Ouvre ta propre discussion en t'efforçant d'être plus clair (et ce d'autant que la formule que tu veux écrire depuis VBA est elle-même erronée).
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

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

Discussions similaires

  1. demande conseils pour le choix d'un SGBD
    Par Grégory PLANCHAT dans le forum Décisions SGBD
    Réponses: 8
    Dernier message: 26/08/2007, 12h05
  2. [VB2005] Demande conseils pour application réseau
    Par arno2000 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 15/02/2007, 12h42
  3. Demande conseils pour débutant
    Par barbu44 dans le forum Access
    Réponses: 3
    Dernier message: 05/12/2006, 23h43
  4. Réponses: 2
    Dernier message: 27/04/2006, 08h26
  5. Demande conseils pour création application
    Par Cryolite dans le forum Oracle
    Réponses: 2
    Dernier message: 06/04/2006, 19h04

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