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 :

Problème de mise en place de code VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    comptable
    Inscrit en
    Juillet 2017
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : comptable

    Informations forums :
    Inscription : Juillet 2017
    Messages : 59
    Par défaut Problème de mise en place de code VBA
    Bonjour Tous le monde,

    Depuis peu de temps je me suis interressé a la programmation VBA sur Excel. Je suis donc un novice.

    J'ai reussi à faire certaine chose sur un fichier sur lequel je travail depuis un moment, mais aujourd'hui je bloque sur une tâche. Après moulte et moulte recherche sur la toile je bloque et je me permets de faire cette demande sur le forum.

    En effet, vous verrez sur le fichier joint, un onglet "Budget". A partir de cette feuille de calcul, après avoir cliquer sur le bouton "Transfert de donnée", un UserForm apparait. J'aimerai après avoir sélectionner dans cette UserForm les dates de la combobox, en appuyant sur ok et en répondant oui au MsgBox, que par exemple le sous-total de la catégorie Habitation, de la colonne dépense réelle, se copie dans la cellule C18 de l'onglet "Tableau de bord Intermediaire".

    Par exemple, (j'essaye d'être le plus clair possible), en appuyant sur le bouton "Transfert de donnée", je sélectionne Août 2017, j'appuie sur "Ok", je réponds "Oui" à la question qu'il me pose, que le système copie les cellules :
    F16 - F23 - F30 - F38 - F46 - F52 de la feuille "Budget" et se colle dans les cellules :
    C18 - C19 - C20 - C21 - C22 - C23 de la feuille "Tableau de bord Intermediaire".

    Ainsi si je sélectionne, dans la combobox, "Septembre 2017", il copiera les cellules, énoncés ci dessus, de la feuille "Budget" dans les cellules D18- D19 - D20 - D21 - D22 - D23 de la feuille "Tableau de bord intermediaire".

    En espérant avoir été clair. Je vous remercie par avance du temps que vous m'accordez.

    Budget1 developper.xlsm

  2. #2
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,
    tu as décris ce que tu voulais faire, (plusieurs étapes)
    quelle étape bloque ?
    et quel est le problème avec ce code ?
    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  3. #3
    Membre averti
    Homme Profil pro
    comptable
    Inscrit en
    Juillet 2017
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : comptable

    Informations forums :
    Inscription : Juillet 2017
    Messages : 59
    Par défaut
    Bonjour,

    Je n'arrive pas à mettre en place le code VBA pour que le système en fonction de la date séléctionner sur l'UserForm puisse réaliser la copie des cellules que je souhaite mettre en place.

    Voila le code que j'ai réalisé jusqu'à présent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub BtnOk_Click()
        Dim Msg As String
     
        Msg1 = "Est tu sur d'avoir séléctionner la bonne période : " & vbNewLine
        Msg1 = Msg1 & Mois.Text & " " & Annee.Text & " ?"
     
        If MsgBox(Msg1, (vbExclamation + vbYesNo)) = vbYes Then
     
        Else
            Unload Choix_Date
     
        End If
    End Sub
    Voila

    Merci d'avance pour ton aide.

  4. #4
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,
    voila une fonction qui t'indique le numéro de colonne
    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
     
    Private Function ColonTarget(PeriodeMois As String, PeriodeAnnee As String)
        Dim NomDeColon As String
        Dim TitreColon As String
        Dim TitreColonNum As Integer
        '-----
        TitreColon = "PasVide"
        TitreColonNum = 3
        '-----
        NomDeColon = UCase(PeriodeMois) & "-" & Right(PeriodeAnnee, 2)
     
        While TitreColon <> ""
            TitreColon = Sheets("Tableau de Bord Intermediaire").Cells(6, TitreColonNum).Value
            If NomDeColon = TitreColon Then
                ColonTarget = TitreColonNum
                Exit Function
            End If
            TitreColonNum = TitreColonNum + 1
        Wend
        ColonTarget = 0
    End Function
    pour le test, j'ai inclus l'appel dans ton code
    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
     
    Private Sub BtnOk_Click()
        Dim Msg As String
     
        Msg1 = "Est tu sur d'avoir séléctionner la bonne période : " & vbNewLine
        Msg1 = Msg1 & Mois.Text & " " & Annee.Text & " ?"
     
        If MsgBox(Msg1, (vbExclamation + vbYesNo)) = vbYes Then
     
    'APPEL
    MsgBox ColonTarget(MonthName(Mois.ListIndex + 1, True), Annee.Text)
     
            Worksheets("Budget").Range("F16:F16").Copy
                Destination = Worksheets("Tableau de Bord Intermediaire").Range("C18:C18")
        Else
            Unload Choix_Date
     
        End If
     
    End Sub
    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  5. #5
    Membre averti
    Homme Profil pro
    comptable
    Inscrit en
    Juillet 2017
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : comptable

    Informations forums :
    Inscription : Juillet 2017
    Messages : 59
    Par défaut
    Bonjour,

    Merci d'avance.
    Donc si je comprend bien, je dois d'abord crée un module avec la fonction et ensuite copier le code dans l'UserForm ?

    Car je viens de faire cela et lorsque j'appuie sur le "bouton Transfert de donnée", une erreur apparait dans le code en me surlignant ColonTarget et en spécifiant que Sub ou Function non définie.

    Merci beaucoup pour le temps que tu m'accorde

  6. #6
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,
    pour le test, la fonction est dans le module du form

    dans un module tu mets ce code , mais en public , Public Function
    dans ce module , en dehors de la function , déclare une variable publique :
    par exemple : Public ColDestNum as integer

    dans ton code bouton tu remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'APPEL
    MsgBox ColonTarget(MonthName(Mois.ListIndex + 1, True), Annee.Text)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'APPEL
    ColDestNum = ColonTarget(MonthName(Mois.ListIndex + 1, True), Annee.Text)

    à partir de cet appel, tu peu utiliser ta variable n'importe où dans le code du WorkBook !!!

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

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

Discussions similaires

  1. mettre en place un code VBA
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 07/11/2008, 15h52
  2. [ Microsoft Expression Web] Mise en place de code
    Par beletteroi dans le forum Autres Logiciels
    Réponses: 0
    Dernier message: 29/07/2007, 12h13
  3. Problème de mise en place channel bonding
    Par juanito7 dans le forum Réseau
    Réponses: 9
    Dernier message: 11/06/2007, 14h04
  4. Problème de mise en place de datasource pour Hibernate
    Par K-Kaï dans le forum Tomcat et TomEE
    Réponses: 6
    Dernier message: 27/07/2006, 10h41
  5. Problème de mise en place de la log4j
    Par pitit777 dans le forum Logging
    Réponses: 2
    Dernier message: 28/03/2006, 15h17

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