Définir une variable

Bonjour à toutes, tous,

Je reviens vers vous concernant une variable.

J'ai besoin que suivant le résultat de la colonne 12 du tableau "tb_export" un module ou un autre soit appelé.

Le code :

Private Sub Cmd_Gen_Debit_P1_Click()

Dim zLign As Integer

Set WLi = Worksheets("Listes")
zLign = Me.ComboBoxDimCaissonP1.ListIndex + 1                                                'zlign est la variable permettant d'interroger chaque ligne du tableau

With WLi.ListObjects("tb_export")

    If .DataBodyRange(zLign, 12).Value = "x" Then                                            'Si la colonne 12 égale x, alors

        Call Module_Debit.Debit                                                              'Appel le module Debit

Else                                                                                         'Sinon

        Call Module_Debitbis.Debit                                                           'Appel le module Debitbis

End If

Unload Me
End With
End Sub

En soi le code est fonctionnel, le souci est que ma variable "zlign" est fausse. Ce que je souhaite c'est que chaque ligne du tableau soit interrogée et ça je ne sais pas comment l'écrire.

Si besoin, je peux fournir le fichier complet mais il est volumineux et il y'a beaucoup de chose dedans qui ne concerne pas la question.

Merci pour votre aide ;)

A+

Bonjour

Oriente-toi vers quelque chose comme cela où peut importe la feuille et position du tableau

Dim ligne As Range
With [tb_export].ListObject.DataBodyRange

    For Each ligne In .Rows
        If ligne.Cells(1, 12).Value = "x" Then 'Si la colonne 12 égale x, alors
        .....
        End If
    Next

End With

Bonjour,

Super ! la solution est fonctionnelle.

Je n'obtiens pas ce que je souhaite au final mais cela vient d'ailleurs, y'a plus qu'à chercher et trouver où. Merci beaucoup.

A +

RE

Dans un module Private il faut peut-être utiliser Range("tb_export") au lieu de [tb_export]

Re 78chris,

Petite question concernant ton code. Je vais essayer d'être le plus compréhensible possible :

capture d ecran 1

Voici le tableau, le but c'est que dans la 12ème colonne (colonne R), si il y'a "x" alors c'est le module "debit" qui est appelé, si il y'a "y" c'est le module "debitbis" qui est appelé.

Avec ton code, c'est le même module qui est appelé pour tout le monde suivant la valeur de la dernière ligne.

Problème, je n'arrive pas à déterminer si cela vient de ton code, ou des modules ....

Merci d'avance ;)

RE

Tu as bien gardé tin if then else ?

Cela teste la douzième colonne de chaque ligne du Tableau

Si oui quels sont les codes des 2 modules ?

Si un module traite la dernière ligne c'est qu'il ne reçoit pas l'info sur la ligne à traiter : l'appel ne passe pas de paramètres alors comment la module sait quoi traiter ?

Je pense avoir saisie le cheminement, arrête mois is je me trompe.

en prenant pour exemple la photo de mon dernier post l'ordre des valeurs de la 12ème colonne est la suivante : (x;y;x;y).

Je pense alors que le code lis la première ligne, appel le module "debit",

Reviens lire la deuxième ligne, appel le module "debitbis",

Ainsi de suite ...

Ce qui voudrais dire que le problème vient de mon module. Ma théorie est-elle exact ?

Je te joins, le fichier complet.

N'étant de loin pas expert en VBA, il est fort possible qu'il y'est des choses bizarres ou incohérentes dedans 😒

RE

Le souci c'est que je ne sais pas ce qui est supposer se passer ni pourquoi tu passes d'un ligne à une autre

Le code est dense donc difficile de deviner rapidement le cheminement

Re,

Oui, je comprends parfaitement. Je pensais pas que cette modification entrainerai de tels changements. 😂

Je vais continuer à plancher. Merci pour ton aide.

RE

Si tu analyses chaque ligne il y a une raison. Laquelle ?

Re,

Je n'ai pas encore trouvé. Comme c'est pour le boulot, je n'ai malheureusement pas que ça à traiter et c'est même un fichier secondaire. Mais je ne manquerai pas de te faire un retour ;)

A +

Re 78chris,

Victoire !!! j'ai finalement réussi à obtenir ce que je souhaitais.

Je me suis rendu compte qu'en créant 2 feuilles distincts, je me compliquais grandement la tâche et le code ... Du coup j'ai recommencé avec une seule feuille, j'ai adapté le code et les zones de nom ... long et chiant à faire mais le résultat est fonctionnel.

Et pour répondre à ta dernière question, dans le module il y'avait une condition qui interrompait le code si elle n'était pas respectée. Cette condition me permettait auparavant de savoir si j'avais une erreur dans l'importation de mes valeurs. 😉

En tout cas, merci pour ton coup de main !

A+

Rechercher des sujets similaires à "definir variable"