Fonction DECALER qui bug provoque souci rowsource listbox

Bonjour.

Je fais appel à vos connaissances sur un problème qui m’agace un peu.

Dans mon fichier excel, j'ai un onglet "facturation" sur lequel il est possible d'effectuer une recherche sur les commandes enregistrées. Ma recherche s'effectue via un userform et les résultats s'affichent dans une listbox. Cela me permet ensuite de cliquer sur la ligne de résultat et d'afficher un nouveau formulaire de modification de la commande sélectionnée.

Pour effectuer la recherche, j'ai au préalable créé un filtre avancé sur le tableau "facturation" qui copie les résultats de la recherche dans l'onglet "facturation" dans une zone spécifique. Puis j'ai créé dans le gestionnaire de noms une fonction DECALER nommée "recherche_commande" afin de pouvoir récupérer les résultats de la zone.

Le code VBA du formulaire de recherche est le suivant :

Private Sub txt_recherche_commande_Change()

On Error Resume Next

Sheets("facturation").Range("R6") = "*" & Me.txt_recherche_commande

'appliquer le filtre à partir des critères
Sheets("facturation").Range("Tableau_facturation[#all]").AdvancedFilter Action:=xlFilterCopy, criteriarange _
    :=Sheets("facturation").Range("R5:R6"), copytorange:=Sheets("facturation").Range("T5:W5"), Unique:=False

'afficher le résultat dans la zone de liste
Me.ListBox_recherche_commande.RowSource = "recherche_commande"

End Sub

Dans les faits tout marche bien.

Sauf que j'ai un souci avec ma fonction DECALER qui bug aléatoirement.

Au départ j'ai ça :

=DECALER(facturation!$T$6;0;0;NBVAL(facturation!$T$6:$T$9999);4)

Et à un moment donné j'ai ça :

=DECALER(facturation!#REF!;0;0;NBVAL(facturation!$T$6:$T$9999);4)

Ce qui n'affiche plus aucun résultat dans ma listbox et de ce fait plus aucune possibilité de modifier une commande.

Le bug survient après une recherche et après avoir modifié une commande. Mais ça reste aléatoire. J'ai du mal à comprendre d'où ça peut venir.

J'ai utilisé la même façon de procéder pour mes recherches sur les onglets "clients" et "articles" et je ne rencontre aucun problème de ce genre.

La seule différence dans ma gestion des modifications, c'est que pour les commandes lors d'une modification, au niveau de mon code j'exécute d'abord une suppression de la ligne en lien avec la commande sélectionnée puis la ligne est de nouveau insérée dans le tableau avec tous les éléments modifiés.

Je me suis demandé si c'était pas cette façon de faire qui provoquait le bug...

Sinon avez-vous une solution à me proposer pour transposer directement dans le code VBA l'équivalent de la fonction DECALER ?

Me.ListBox_recherche_commande.RowSource = "recherche_commande"

Ca viendrait remplacer le rowsource "recherche_commande".

Merci d'avance pour vos réponses ou éclaircissements.

Bon week-end.

Bonjour,

En l'absence de fichier joint, je proposerai ceci :

=DECALER(facturation!$T:$T;6;0;NBVAL(facturation!$T$6:$T$9999);4)

au lieu de

=DECALER(facturation!$T$6;0;0;NBVAL(facturation!$T$6:$T$9999);4)

Bonsoir thev, et merci de m'aider à nouveau

Je vais essayer de voir si ta proposition solutionne le bug sur la fonction et je t'en fais un retour.

Merci en tout cas de ton aide.

Bonne soirée.

Rechercher des sujets similaires à "fonction decaler qui bug provoque souci rowsource listbox"