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 :

VBA Date Montant


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    gestion
    Inscrit en
    Mai 2017
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : gestion

    Informations forums :
    Inscription : Mai 2017
    Messages : 163
    Par défaut
    Bonjour,

    Voila ma problématique,

    J'ai un nombre (montant) indiqué dans une textbox,

    Je dois éclater ce nombre sur plusieurs colonnes,

    Je n'ai rien trouvé sur le net, avez vous des pistes ?

    Autre problématique différente de la précédente, j'ai plusieurs autres montant dans plusieurs textbox répartit par date,

    je dois les sommer par période (ex: sommer les montant de 2010 à 2015 et les mettre dans une colonne, ensuite mettre 2016 dans la colonne suivante)

    Là aussi si vous avez des pistes je suis preneur, en fait je suis bloqué.

    Pour information,

    Les textbox sont dans un userform.

  2. #2
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour,
    Je dois éclater ce nombre sur plusieurs colonnes,
    Qu'est-ce que cela veut dire plus précisemment? Est-ce que tu veux écrire le même montant sur plusieurs colonnes? Est-ce que tu veux "couper" le nombre et écrire le résultat dans plusieurs colonnes?
    Ici, un tuto sur les controles dans un UserForm. Tu pourras notamment y trouver comment récupérer la valeur inscrite dans une TextBox.

  3. #3
    Membre confirmé
    Homme Profil pro
    gestion
    Inscrit en
    Mai 2017
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : gestion

    Informations forums :
    Inscription : Mai 2017
    Messages : 163
    Par défaut
    Le but est de répartir le montant,

    Exemple: pour un montant de 20000, 10% soit 2000 sur la colonne E , 30% 6000 sur la colonne F, 20% sur la colonne G, et le reste sur les suivantes.

    Que cette répartition se fasse automatiquement sur des colonnes qui se suivent en fonction de ces premiers critères.

    Avez vous une piste ?

  4. #4
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Comment connait-on les %? Sont-ce toujours les mêmes?
    Si ce sont toujours les mêmes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub CommandButton1_Click()
        With Sheets("maFeuille")
            .Range("E1") = 10 / 100 * TextBox1
            .Range("F1") = 20 / 100 * TextBox1
            .Range("G1") = 30 / 100 * TextBox1
            .Range("H1") = 40 / 100 * TextBox1
        End With
    End Sub
    Ici, j'ai un bouton, quand je clique dessus, on écrit 10% de la valeur de la Textbox1 en E1, 20% de la valeur de la Textbox1 en F1, 30% de la valeur de la Textbox1 en G1 et le reste (donc 40%) en H1.
    J'imagine qu'à chaque fois, il ne faudra pas l'écrire au même endroit, mais sur la première ligne vide de la feuille?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim derLig As Long
    derLig = Sheets("maFeuille").Cells(Rows.Count, 5).End(xlUp).Row + 1
    Ceci permet d'obtenir la première ligne vide de la feuille.

  5. #5
    Membre confirmé
    Homme Profil pro
    gestion
    Inscrit en
    Mai 2017
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : gestion

    Informations forums :
    Inscription : Mai 2017
    Messages : 163
    Par défaut
    Autre souci dans ce code,

    lorsque de tape:

    For i = 0 To UBound(donnee)

    [donnee] étant une liste.

    j'ai message d'erreur qui me dit " l'indice n'appartient pas a la sélection".

    Avez vous une idée de ce que cela peut vouloir dire ?

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 674
    Par défaut
    SAlut,

    si tu as un liste de n elements, tu peux la parcourir
    - soit de 0 a n-1
    - soit de 1 a n

    et donc tu dois aller de 0 a Ubound()-1
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  7. #7
    Membre confirmé
    Homme Profil pro
    gestion
    Inscrit en
    Mai 2017
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : gestion

    Informations forums :
    Inscription : Mai 2017
    Messages : 163
    Par défaut
    Salut Andre,

    Il est possible de parcourir la liste ainsi,

    mais dans ce cas ça ne marche pas.

    Je ne sais pas pourquoi.

    Si quelqu'un a une idée...

  8. #8
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Non, justement, UBound renvoie le plus grand indice de la liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
        Dim liste(2) As String
            liste(0) = "a"
            liste(1) = "b"
            liste(2) = "c"
        Debug.Print (UBound(liste))        'renvoie 2
    End Sub
    cf. le tuto de silkyroad : http://silkyroad.developpez.com/vba/tableaux/#LII-A et http://silkyroad.developpez.com/vba/tableaux/#LV-B
    Donc on devrait pouvoir faire une boucle de 0 à UBound dans la liste. Est-ce que tu n'aurais pas mis par hasard Option Base 1? Parce qu'à ce moment-là, tu n'as pas d'élément 0 dans ta liste.
    Qu'est-ce qu'il se passe exactement dans ta boucle?

  9. #9
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 674
    Par défaut
    OK,

    a quoi fais-tu reference quand tu parles de liste ? si c'est une listbox c'est List.Count, mais si tu es passe par un Variant par exemple, la syntaxe est la bonne

    Il nous faudrait les lignes precedentes, qui indiquent notamment le type exact de variable de donnee et comment cette variable est alimentee.
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  10. #10
    Membre confirmé
    Homme Profil pro
    gestion
    Inscrit en
    Mai 2017
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : gestion

    Informations forums :
    Inscription : Mai 2017
    Messages : 163
    Par défaut
    Elle est déclaré ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim liste() As var_affair
    Je ne sais si c'est suffisant comme info

    Salut Riaolle,

    La boucle ne se lance pas,

    J'ai ce msg d'erreur qui apparait tout de suite.

    Je ne sais toujours pas si c'est du à une mauvaise déclaration ou s'il faut une sorte de réinitialisation des données (flou total)

    Merci encore

  11. #11
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 674
    Par défaut
    pasbesoin des parentheses lors de la declaration

    Et qu'est le type Var_Affair ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  12. #12
    Membre confirmé
    Homme Profil pro
    gestion
    Inscrit en
    Mai 2017
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : gestion

    Informations forums :
    Inscription : Mai 2017
    Messages : 163
    Par défaut
    Var_affair n'est pas déclaré,

    je suppose que c'est un variant par défaut.

    cela est-il possible ?

  13. #13
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour,
    Var_affair n'est pas un type de VBA. (une recherche sur google ["vba var_affair"] renvoie seulement cette discussion comme résultat).
    Est-ce que tu as un module de classe qui s'appelle var_affair?
    Donne-nous ton code en entier et pas seulement la ligne qui renvoie une erreur.

  14. #14
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour riaolle
    Est-ce que tu as un module de classe qui s'appelle var_affair?
    ou une stucture (variable personnalisée), la matrice (dont on ne sait plus si elle a pour nom donnee ou liste) étant alors un tableau de structures...
    Il est quand même pour le mont surprenant que le demandeur ne sache pas ce que c'est. C'est à se demander s'il est le créateur de son application ...

    Quant à (l'un des messages du demandeur)
    For i = 0 To UBound(donnee)

    [donnee] étant une liste.

    j'ai message d'erreur qui me dit " l'indice n'appartient pas a la sélection".
    Ce message d'erreur ne saurait apparaître sur la ligne For ... to ... !
    - Soit la matrice donnee n'existe pas (et le message serait totalement autre),
    - soit elle existe, mais n'est pas dimensionnée
    - soit elle existe et est dimensionnée
    dans les deux derniers cas, le message d'erreur serait reçu sur une ligne de code AU SEIN de la boucle et non sur la ligne montrée

    On ignore enfin :
    - comment a été déclarée la variable matrice donnée et SURTOUT comment elle a été initialisée
    - on ignore enfin s'il est en option Base 1 ou 0

    Tout cela est bien dommage et donne réellement à penser soit à du "bricolage" incompris, soit à une reprise d'un projet non analysé ou non compris

  15. #15
    Membre confirmé
    Homme Profil pro
    gestion
    Inscrit en
    Mai 2017
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : gestion

    Informations forums :
    Inscription : Mai 2017
    Messages : 163
    Par défaut
    Effectivement je suis pas le créateur de cette appli.

    Je dois la reprendre et la modifier.

  16. #16
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Il va nous falloir plus d'explications et d'éléments pour t'aider. Là, tu vas chez le docteur et tu dis "J'ai mal", mais tu ne dis pas où, depuis combien te temps, à quel point, quel type de douleur ... Le médecin devra faire tout un tas de suppositions pour trouver ce qui ne va pas et il n'est même pas sûr de trouver. Il peut essayer plusieurs traitement, mais n'est jamais sûr que ce sera le bon (accessoirement, ça peut être dangeureux aussi, mais là on atteint les limites de ma comparaison )
    Je répète quelques messages :
    Donne-nous ton code en entier et pas seulement la ligne qui renvoie une erreur.
    le message d'erreur serait reçu sur une ligne de code AU SEIN de la boucle et non sur la ligne montrée
    Donne-nous plus de code, en particulier le code de la boucle.

  17. #17
    Membre confirmé
    Homme Profil pro
    gestion
    Inscrit en
    Mai 2017
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : gestion

    Informations forums :
    Inscription : Mai 2017
    Messages : 163
    Par défaut
    Ok, je vois,

    Je sais que la liste est une listbox.

    J'essaie d'en mettre plus, j'ai juste mon boss qui m'impose une certaine confidentialité là-dessus,

  18. #18
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    ne pas espérer alors obtenir une aide technique concrète sans une présentation digne de ce nom,
    c'est à dire claire et complète, avec tenants et aboutissants !     Voir donc les règles de ce forum …

    Sinon, bon courage !

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Stockholm, London, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

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

Discussions similaires

  1. [VBA] Date d'un message notes.
    Par tieumss dans le forum VBA Access
    Réponses: 1
    Dernier message: 19/06/2008, 15h01
  2. [VBA] Date anglaise en toute lettre
    Par Ofsco dans le forum Word
    Réponses: 17
    Dernier message: 21/02/2008, 14h44
  3. [VBA] Date de modification de la bd
    Par BaRonm3 dans le forum Access
    Réponses: 7
    Dernier message: 05/07/2006, 12h42
  4. [VBA] Date pour access
    Par avto64 dans le forum VBA Access
    Réponses: 2
    Dernier message: 07/03/2006, 10h20
  5. SQL/VBA Date Format
    Par LeScandinave dans le forum Access
    Réponses: 20
    Dernier message: 05/10/2005, 09h34

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