Boucles IF qui ne s'initialise pas MACRO VBA

Bonjour le fil

aujourd'hui je reviens vers vous car j'ai un petit problème , le but de mon travail est de créer une macro qui va générer des écritures comptables pour les importer dans un logiciel de comptabilité,

Avec l'aide d'un utilisateurs de ce forum j'ai réussi a créer cette macro , a l'intérieur de celle-ci j'essaye de crée une boucle IF pour afficher les numéro client selon leur mode de paiement mais je n'arrive pas a bien l'afficher dans ma cellule je vous met un fichier exemple avec une feuille nommé base et une feuille résultat, dans celle-ci j'y ai mis les différents numéro de compte concernant chaque mode de paiement et le tableau qui est initialisé grâce a ma macro .

si quelqu'un pourrait m'aider avec ma boucles ?

merci, a vous

Option Explicit

Public Sub TransformData()
Dim wb As Workbook, ws As Worksheet, ws2 As Worksheet
Dim Tbl As Variant, arr() As Variant
Dim i As Long, k As Long
Dim n As Double

    Set wb = ActiveWorkbook
    n = wb.Worksheets.Count
    Set ws = wb.Worksheets("C")
    Tbl = ws.Cells(1).CurrentRegion.Value2

    Set ws2 = Worksheets.Add(after:=Worksheets(Worksheets.Count))
    ws2.Name = "FiltreReglement" & n

    For i = 2 To UBound(Tbl)
        ReDim Preserve arr(6, k)
        arr(0, k) = Tbl(i, 1)
        arr(1, k) = "CA"
        arr(2, k) = Left(Tbl(i, 3), 7)

        If Tbl(i, 7) = "Reglement CARTES" Then
            arr(2, k) = Replace("580000")
            ElseIf Tbl(i, 7) = "Reglement CHEQUES" Then
            arr(2, k) = Left(Tbl(i, 3) & "580100", 6)
            ElseIf Tbl(i, 7) = "Reglement ESPECES" Then
            arr(2, k) = Left(Tbl(i, 3) & "580200", 6)
            ElseIf Tbl(i, 7) = "Reglement BON ACHAT" Then
            arr(2, k) = Left(Tbl(i, 3) & "580400", 6)
            ElseIf Tbl(i, 7) = "Reglement VIREMENTS" Then
            arr(2, k) = Left(Tbl(i, 3) & "580500", 6)
            ElseIf Tbl(i, 7) = "Reglement BEZAC KDO" Then
            arr(2, k) = Left(Tbl(i, 3) & "580600", 6)
            ElseIf Tbl(i, 7) = "Reglement VIREMENT TEEKERS" Then
            arr(2, k) = Left(Tbl(i, 3) & "580800", 6)
            ElseIf Tbl(i, 7) = "Reglement SUMUP" Then
            arr(2, k) = Left(Tbl(i, 3) & "580900", 6)

            End If

            If Tbl(i, 5) = "D" Then
                arr(3, k) = Tbl(i, 6)
            Else
                arr(4, k) = Tbl(i, 6)
            End If

        arr(5, k) = Tbl(i, 7)
        k = k + 1

    Next i

    With ws2
        .Cells(2, 1).Resize(, 6).Value = Array("date rgt", "code journal", "compte", "débit", "crédit", "Libellé")
        .Cells(3, 1).Resize(k, 6).Value = Application.Transpose(arr)
    End With

End Sub

bonjour,

reglement <> règlement, donc faire attention.

Select Case Tbl(i, 7)
               Case "Reglement CARTES": arr(2, k) = "Replace(580000)" '?????
               Case "Règlement CHEQUES": arr(2, k) = Left(Tbl(i, 3) & "580100", 6)
               Case "Reglement ESPECES": arr(2, k) = Left(Tbl(i, 3) & "580200", 6)
               Case "Reglement BON ACHAT": arr(2, k) = Left(Tbl(i, 3) & "580400", 6)
               Case "Reglement VIREMENTS": arr(2, k) = Left(Tbl(i, 3) & "580500", 6)
               Case "Reglement BEZAC KDO": arr(2, k) = Left(Tbl(i, 3) & "580600", 6)
               Case "Règlement VIREMENT TEEKERS": arr(2, k) = Left(Tbl(i, 3) & "580800", 6)
               Case "Reglement SUMUP": arr(2, k) = Left(Tbl(i, 3) & "580900", 6)
               Case Else: arr(2, k) = "???? erreur"
          End Select

comme premières lignes de votre module (ajouter!)

Option Explicit
Option Compare Text     '<<<<<<<<<<<<<<<<<<<<< IMPORTANT : MAJUSCULES ET MINISCULES !!!!!!!!!!!!!!!!!!!!!!!!!!!!!

le reste, je ne l'ai pas vraiment regardé

16exemplemacroif.xlsm (30.64 Ko)

bonjour d'abord merci beaucoup pour votre réponses rapide mais malheureusement ca ne fonctionne pas ca ne change pas les valeur selon le mode de paiement le code effectué je le met a la place de ma boucle c'est bien ca

Bonjour DragZ,

@BsAlv vous à donné votre fichier avec le code modifié, que vous faut-il de plus

bonjour @BrunoM45

merci bah le problème c'est que le code que le monsieur ma donné a le même effet que ma boucle IF ca ne la prend pas en compte , et depuis tout a l'heure j'essaye de regarder même les majuscules mais ca ne change rien et je ne vois pas pourquoi même sur mon fichier modifié

bonjour,

cette question est une continuation de hier. Il y avait 2 solutions possible, la mienne avec un array et une avec 2 arrays et une transposition.

Je supposais que, comme vous avez choici pour la derniere option, que vous aviez compris le truc, apparament non.

Il faut prendre un papier et notez les paramètres et inspectez ce qui se passe ... .

re

je me suis mis a utilisé votre code(celui d'y hier j'y ai intégrer le SELECT Case mais ca ne fonctionne je comprend votre code mais je manque de logique + je suis debutant en VBA je vais essayer de trouver l'erreur que j'ai faites si je n'y arrive pas je reviens vers ou si jamais

     For i = 1 To UBound(Tbl) - 1   'boucle les données
          'Tbl(i, 3) = "'" & Left(Tbl(i, 3) & "00000", 6)     'code journalier

          Select Case Tbl(i, 7)
             Case "Reglement CARTES": Tbl(i, 3) = Left(Tbl(i, 3) & "580000", 6)
             Case "Reglement CHEQUES": Tbl(i, 3) = Tbl(i, 3) & "580100"
             Case "Reglement ESPECES": Tbl(i, 3) = Tbl(i, 3) & "580200"
             Case "Reglement BON ACHAT": Tbl(i, 3) = Tbl(i, 3) & "580400"
             Case "Reglement VIREMENTS": Tbl(i, 3) = Tbl(i, 3) & "580500"
             Case "Reglement BEZAC KDO": Tbl(i, 3) = Tbl(i, 3) & "580600"
             Case "Reglement VIREMENT TEEKERS": Tbl(i, 3) = Tbl(i, 3) & "580800"
             Case "Reglement SUMUP": Tbl(i, 3) = Tbl(i, 3) & "580900"
             Case Else: Tbl(i, 3) = "???? erreur"
          End Select
image

Re je n'y arrive toujours pas a l'afficher correctement car je n'arrive pas a modifier le LEFT en gros la première ligne règlement BON ACHAT il faut qu'il y aie compte 4110000 et la deuxième ligne 580400 mais la non ca m'affiche deux valeur dans une seule (je sais que ces a cause du & ) mais je ne saurais quoi mettre

re,

j'ai essayé d'expliquer toutes les lignes aussi bien que possible. La colonne C, je n'ai pas compris le résultat voulu.

Vous lisez les données dans un array Tbl, avec ces dimensions, on crée un 2ième array Arr, mais comme la première ligne de Tbl contient des entêtes, il y a un écart d'une ligne.

En ajoutant un ' en face d'un numéro, Ecxel interprêt ce numéro comme texte et n'utilisera pas le format scientifique (x.xExx)

re ,

Tout d'abord merci pour votre réponse et vos explications , je comprend bien le code grâce a vous et pour vous expliquer ce que je veux dans la COLONNE C c'est que selon ce qu'il y a marque dans la colonne F "Règlements" ca m'affiche dans chaque deuxième ligne de la colonne C le numéro de compte correspondant

Est ce que vous comprenez ? d'où l'utilisation de ma boucles .

bonjour,

mieux avec ceci ?

 If UCase(Tbl(i + 1, 5)) = "D" Then    ' 2ième ligne donc les "D"
               Select Case Tbl(i + 1, 7)   'la libelle
                    Case "Reglement CARTES": Arr(i, 3) = "'580000"     'remarque le ' comme premier charactère
                    Case "Règlement CHEQUES": Arr(i, 3) = "'580100"
                    Case "Reglement ESPECES": Arr(i, 3) = "'580200"
                    Case "Reglement BON ACHAT": Arr(i, 3) = "'580400"
                    Case "Reglement VIREMENTS": Arr(i, 3) = "'580500"
                    Case "Reglement BEZAC KDO": Arr(i, 3) = "'580600"
                    Case "Règlement VIREMENT TEEKERS": Arr(i, 3) = "'580800"
                    Case "Reglement SUMUP": Arr(i, 3) = "580900"
                    Case Else: Arr(i, 3) = "???? erreur"
               End Select
          Else
               Arr(i, 3) = "'" & Tbl(i + 1, 3)
          End If

Ca fonctionne merci Beaucoup monsieur Vous m'avez été d'une grande aide

Rechercher des sujets similaires à "boucles qui initialise pas macro vba"