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 :

Rajouter code à un code déjà existant


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Femme Profil pro
    Secrétaire Comptable
    Inscrit en
    Mars 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Secrétaire Comptable

    Informations forums :
    Inscription : Mars 2015
    Messages : 6
    Par défaut Rajouter code à un code déjà existant
    Bonjour Tout le Monde,
    D’abord toutes mes excuses si je ne poste pas au bon endroit.
    Ensuite mon problème : je n’y connais absolument rien en VBA ou Macros, ça fait presque 15 jours que je cherche et je n’ai pas trouvé de solutions à mon problème. Alors si une bonne âme voulait bien m’aider…
    J’ai un fichier excel qui comporte plusieurs feuilles, l’une d’elles s’appelle Bénéficiaires (une base de données) et se remplie grâce à un Userform appelé : frm.Bénéficiaires.
    Dans la feuille Exel Bénéficiaires j’ai rajouté des colonnes pour les dates de location, leur durée et les km.

    Les entêtes de ce tableau (base de données) commencent en B6.
    Pour les Dates de Contrats :
    Début : Colonne E (dc E7)
    Fin : Colonne F (dc F7)
    Durée : Colonne G (dc G7)

    Pour le kilométrage :
    Nb de Km (Dom/Trav) : Colonne J (dc J7)
    Aller/Retour : Colonne K (dc K7)
    Km Parcourus : Colonne L (dc L7)

    Maintenant pour le Userform :
    Bénéficiaire5 = Début
    Bénéficiaire6= Fin
    Bénéficiaire7 = Durée
    Bénéficiaire10 = Nb de Km
    Bénéficiaire11 = Nb de Km Aller/Retour
    Bénéficiaire12 = Nb de Km Parcourus

    Voici le code VBA pour la saisie et la validation de ce userform (je précise, ce n’est pas moi qui l’ai fait, lol) :
    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
    38
    Private Sub cmdAjouterBénéficiaire_Click()
        Dim X As Integer
        Dim nextrow As Range
     
    On Error GoTo cmdAjouterBénéficiaire_Click_Error
     
    Set nextrow = Feuil4.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
        For X = 1 To 49
            If Me.Controls("Bénéficiaire" & X).Value = "" Then
                MsgBox "Veuillez saisir toutes les données"
                Exit Sub
            End If
        Next
     
        If WorksheetFunction.CountIf(Feuil4.Range("A:A"), Me.Bénéficiaire18.Value) > 0 Then
            MsgBox "Ce bénéficiaire existe déjà"
            Exit Sub
        End If
     
        For X = 1 To 49
            nextrow = Me.Controls("Bénéficiaire" & X).Value
            Set nextrow = nextrow.Offset(0, 1)
        Next
     
    'clear
        For X = 1 To 49
            Me.Controls("Bénéficiaire" & X).Value = ""
        Next
     
    On Error GoTo 0
        Exit Sub
    cmdAjouterBénéficiaire_Click_Error:
    MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure cmdAjouterBénéficiaire_Click of Form frmBénéficiaires"
    End Sub
     
    Private Sub cmdQuitterBénéficiaire_Click()
    Unload Me
    End Sub

    Ce que j’aimerais, si vous m’avez suivie, c’est rajouter les codes pour les colonnes que j’ai rajoutées. La fonction DateDiff qu’il me calcule automatiquement sur le userform la durée de location dans Bénéficiaire7, et qu’après avoir saisie les km, que VBA me calcule les km A/R dans Bénéficiaire11 (soit Bénéficiaire10 x 2) et dans km parcourus Bénéficiaire12 : Bénéficiaire7 x Bénéficiaire11.

    Help please ! J'ai vraiment essayer de comprendre le code mais j'avoue que là, je suis une vraie buse ! Désolée,

    Pour finir, j’ai Windows8, Exel 2013.

    Merci d’avance,
    LO

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    tu parles de 6 données différentes et de 6 contrôles bénéficiaires

    or, quand on regarde ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For X = 1 To 49
        nextrow = Me.Controls("Bénéficiaire" & X).Value
        Set nextrow = nextrow.Offset(0, 1)
    Next
    ici on fait une boucle sur 49 contrôles "Bénéficiaires" ... il y en a 43 de plus que ton explication de départ
    j'en déduis que tu as 49 informations, le nom du contractant étant probablement en colonne A ...les 48 autres colonnes contenant des informations diverses dont notamment les 6 dont tu as parlé

    donc avant de te proposer quelque chose, décrit mieux la situation exacte de ton userform, et pas uniquement les informations qui te posent problème
    on ne peut pas deviner ... hélas

  3. #3
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Billets dans le blog
    17
    Par défaut
    il manque aussi dans ta gestion d'erreur , que se passe t il quand tu as le message?
    Sinon effectivement explique un peu plus on pourra t'aider. Meme sans le code , come ton explication ne correspond pas , explique nous plus en details.
    Sinon peut être que le code correspond pas trop ?..
    Voila n'hésite pas

  4. #4
    Membre régulier
    Femme Profil pro
    Secrétaire Comptable
    Inscrit en
    Mars 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Secrétaire Comptable

    Informations forums :
    Inscription : Mars 2015
    Messages : 6
    Par défaut
    Bon désolée, je pensais avoir été claire… c’est sûr ce n’est pas évident de se faire comprendre à travers un écran.
    Au début, le formulaire et le code fonctionnait parfaitement bien, je n’ai jamais eu de problèmes avec.
    Le truc qui se passe, c’est que j’en avais marre de saisir à chaque fois les trajets, les dates de location et les km directement sur le tableau excel. Alors j’ai rajouté des colonnes à mon tableau excel et donc forcément à mon userform.

    Donc là, maintenant, j’ai bien 49 colonnes qui correspondent à mes 49 contrôles, d’ailleurs ce numéro 49 c’est le seul truc que j’ai changé dans le code vba car à la base il y en avait 41.

    J’ai récupéré des codes de Datediff et faire des multiplications dans un userform, sauf que je ne sais pas comment l’écrire dans ce code. J’ai pas trop envie de foutre en l’air un truc qui marche bien, juste parce que je suis feignante… lol

    Je vous joins mon fichier excel, ça vous aidera probablement.


    Amitiés,
    LO
    Fichiers attachés Fichiers attachés

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu
    Bonjour

    l'inconvenant avec ce genre de userform c'est que dans une boucle il est difficile de transcrire les données des textbox et autres controls dans les emplacements dans le sheets

    une chose a faire toute simple mais alors archi simple
    dans le "TAG" de chaque controls tu met soit l'index ou la lettre de la colonne correspondante au celle du sheets

    ainsi avec xl(up).row pour la derniere ligne et le tag du control tu a forcement l'adresse de la cellule de destination c'est assez simple comme procédé

    ensuite l'ors de la validation dans ton usf

    tu fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for each ctrl in me.controls
    if ctrl.tag<>"" then cell(derlig,ctrl.tag)=ctrl' ca c'est le cas ou tu aurais mis l'index de la colonne dans le tag 
    next
    maintenant si tu a mis la lettre de la colonne tu fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for each ctrl in me.controls
    if ctrl.tag<>"" then range(ctrl.tag & derlig)=ctrl
    next
    derlig ayant été defini juste avant avec xl(up).row+1 bien entendu

    comme tu peut le voir il n'y a rien de compliqué

    j'espère avoir été clair sur ce point
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Membre régulier
    Femme Profil pro
    Secrétaire Comptable
    Inscrit en
    Mars 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Secrétaire Comptable

    Informations forums :
    Inscription : Mars 2015
    Messages : 6
    Par défaut
    Bonjour Patrick,
    Je suis sûre que tu es très clair mais c'est moi qui ne comprend pas le langage VBA,
    Ces lignes que tu me proposes, je l'ai retranscris où exactement dans le code que j'ai posé en début de sujet ? Et donc, si je les rajoute ça va me calculer la durée et la distance ?

    Amitiés,
    LO

Discussions similaires

  1. conditions a rajouter dans un code
    Par Tournament dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 21/06/2015, 13h55
  2. [Toutes versions] Besoin d'un code pour vérifier l'existence d'une chaine à partir d'une colonne dans une autre
    Par Chedy Smida dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/02/2015, 17h05
  3. [XL-2003] Code pour tester l'existence du meme nom du classeur
    Par Adilleroy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/07/2010, 16h32
  4. [W3C] hebergeur rajoute lignes de code invalides
    Par goofyto8 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 15/11/2009, 18h02
  5. Code non visible, mais existent !
    Par Rainbow30 dans le forum Dreamweaver
    Réponses: 1
    Dernier message: 13/09/2007, 16h17

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