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 :

Générer des listes déroulantes contenant les valeurs d'une plage nommée via une variable NomPlage


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Consolideur
    Inscrit en
    Novembre 2023
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations professionnelles :
    Activité : Consolideur
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2023
    Messages : 2
    Par défaut Générer des listes déroulantes contenant les valeurs d'une plage nommée via une variable NomPlage
    Bonjour à tous,

    C'est ma première question sur ce forum, pardon par avance si je n'ai pas strictement suivi le protocole du forum.

    Au prélable, j'ai longuement cherché mais je n'ai pas trouvé de réponse à mon problème, ni sur ce forum ni sur d'autres, en français et en anglais.

    Mon problème est le suivant :

    Objet: Création d'une macro qui permet de générer des écritures de reclassement comptable

    Objectif: A partir d'un tableau (Cf. image ci-dessous) qui présente en colonnes des reclassements de montants de rubrique à rubrique, ces rubriques étant présentées en ligne (NB: une rubrique est constituée de plusieurs comptes comptables), je cherche à automatiser la génération des écritures comptables de reclassement à charger dans un format "plat" TXT dans mon ERP (logiciel comptable).

    Pièce jointe 646623

    Description succincte de la macro: A partir d'un tableau de synthèse des reclassements, ma macro vient créer un onglet par écriture (une écriture=une colonne) dans lequel elle génère l'écriture en colonne A, ça c'est plutôt simple, puis chaque montant à reclasser avec le compte correspondant, ce compte est à choisir dans une liste déroulante (liste qui comporte tous les comptes de la rubrique). Ces listes sont stockées dans des plages nommées dans un onglet à part et je souhaite appeler ces plages avec une objet type range qui dépend d'une variable NumRubrique (Cf. Code). la liste déroulante devant être mise dans une cellule sur la ligne de l'écriture générée. Cf. Image ci-dessous:

    Nom : Image2.PNG
Affichages : 145
Taille : 16,3 Ko

    Mon problème se situe en ligne 59 du code ci-dessous, Formula1 n'admet pas de plage Range. Comment pourrais-je procéder pour récupérer et lui donner les valeurs du Range NomPlage1 par exemple, sachant que ce NomPlageX est une variable qui permet de faire le lien entre le numéro de la rubrique dans le tableau de synthèse d'une part et la liste des comptes comptables de cette rubrique d'autre part ?

    L'idéal eut été d'interroger directement l'utilisateur via une sorte d'inputbox liste déroulante et que le numéro de compte choisit vient se placer en ligne 69 du code à l'emplacement (Numéro de compte choisi)

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    Sub Generer_Ecritures_Bridge_CFS()
     
    Dim NumColonne, DerniereColonne, DerniereLigne, IndiceColonne, IndiceLigne, Montant, MontantSigne, Indice As Integer
    Dim NbLigneEcriture As Integer
    Dim Signe, NumCompte, NumRubrique, Liste As String
    Dim Cell As Range
     
    'Recuperer le numero de colonne de la dernière écriture dans le bridge retraité
     
    IndiceLigneEcriture = 4
     
    'Déterminer le numéro de la dernière colonne non vide du Bridge
     
    DerniereColonne = Sheets("Bridge_CFS_EDF_Re").Range("D1").End(xlToRight).Column
     
    'Déterminer le numéro de la dernière ligne non vide du Bridge
     
    DerniereLigne = Sheets("Bridge_CFS_EDF_Re").Cells(Rows.Count, 1).End(xlUp).Row
     
    'En fonction du nombre d'écritures, nous allons générée le code journal et créer l'onglet puis le nommer avec le code journal pour chaque écriture selon le format suivant "RBV_vX_vZ", X et Z étant vaiables. A noter qu'EDIFIS nous limite au numéro 10 pour la valeur X on passe donc la dizaine en Z
     
    If DerniereColonne <= 13 Then
     
      For IndiceColonne = 4 To DerniereColonne
     
      'Création de l'onglet
     
      Sheets.Add After:=Worksheets(Worksheets.Count())
     
      'Nommer l'onglet
     
      Sheets(Sheets.Count).Name = "RBV41_" & IndiceColonne - 3 & "v_3"
     
       'Générer les 3 premières lignes génériques de l'écriture
     
        Sheets("RBV41_" & IndiceColonne - 3 & "v_3").Cells(1, 1).Value = "Ecriture RBV41_" & IndiceColonne - 3 & "v_3"
        Sheets("RBV41_" & IndiceColonne - 3 & "v_3").Cells(2, 1).Value = "!JOURNAL=RBV41 S1073 BR" & IndiceColonne - 3
        Sheets("RBV41_" & IndiceColonne - 3 & "v_3").Cells(3, 1).Value = "!DESC=" & Sheets("Bridge_CFS_EDF_Re").Cells(2, IndiceColonne).Value
     
        'Générer les lignes de l'écriture correspondant à impact par compte
     
        For IndiceLigne = 3 To DerniereLigne
        MontantSigne = Sheets("Bridge_CFS_EDF_Re").Cells(IndiceLigne, IndiceColonne).Value
        Montant = Int(Abs(Sheets("Bridge_CFS_EDF_Re").Cells(IndiceLigne, IndiceColonne).Value * 1000))
        'MsgBox (Sheets("RBV41_" & IndiceColonne - 3 & "v_3").Cells(Sheets("RBV41_" & IndiceColonne - 3 & "v_3").Range("A1").End(xlDown).Row + 1, 6).Value)
     
        If MontantSigne < 0 Then Signe = "D" Else Signe = "C"
        If MontantSigne <> 0 Then
     
        NumRubrique = Sheets("Bridge_CFS_EDF_Re").Cells(IndiceLigne, 1).Value
     
        With Sheets("RBV41_" & IndiceColonne - 3 & "v_3").Range("F" & Range("A1").End(xlDown).Row + 1).Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
             xlBetween, Formula1:="=NumRubrique"
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = ""
            .ErrorTitle = ""
            .InputMessage = ""
            .ErrorMessage = ""
            .ShowInput = True
            .ShowError = True
        End With
        Sheets("RBV41_" & IndiceColonne - 3 & "v_3").Cells(Sheets("RBV41_" & IndiceColonne - 3 & "v_3").Range("A1").End(xlDown).Row + 1, 1).Value = (Numéro de compte choisi) & "[ICP None];[None];[None];[None];" & Signe & ";" & Montant & ";"
        End If
        Next
     
      Next
    Voici à quoi ressemble l'écriture générée dans chaque onglet:

    !Scenario=RT
    !Year=2023

    !Period=September

    !JOURNAL=RBV41 S1073 XXX;U;R;P;<Entity Curr Adjs>; ;;Entity;
    !DESC=Reclassement d'immobilisation
    P25300;[ICP None];[None];[None];[None];RBV41;C;10000;
    P10606;[ICP None];[None];[None];[None];RBV41;D;10000;

    PXXXXX correspondant aux numéros de compte.

    Merci beaucoup pour votre aide.

    Bien cordialement,

    Izem

  2. #2
    Candidat au Club
    Homme Profil pro
    Consolideur
    Inscrit en
    Novembre 2023
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations professionnelles :
    Activité : Consolideur
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2023
    Messages : 2
    Par défaut
    Up, svp

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/07/2020, 16h52
  2. Réponses: 4
    Dernier message: 15/08/2012, 15h05
  3. [AC-2000] Liste déroulante avec les valeurs de plusieurs champs
    Par forges dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 08/09/2011, 08h28
  4. Réponses: 2
    Dernier message: 24/03/2011, 00h17
  5. Liste déroulante avec les valeur de 2 tables
    Par christ-94 dans le forum Access
    Réponses: 1
    Dernier message: 21/06/2006, 19h44

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