Comportement de MACRO différent selon la méthode de lancement

Bonjour,

je rencontre un problème que ne sais pas vraiment gérer et qui échappe.

J'ai coder une macro qui applique un traitement à un tableau (30ligne * 2050colonne).
Chaque cellule est observé et suivant la vérification d'un critère, une opération est appliqué (a défaut de fournir le classeur entier qui me prendrai un temps important à anonymiser, voici la ligne de code qui pose problème) :

'Boucle qui applique le critère de cohérence
 For RowIndex = LBound(Valeur_Coh, 1) To UBound(Valeur_Coh, 1)         'On boucle de la première à la dernière ligne du tableau -> Fréquence
 For ColumnIndex = LBound(Valeur_Coh, 2) To UBound(Valeur_Coh, 2)  'On boucle de la première à la dernière colonne du tableau -> Distance
     If Valeur_Coh(RowIndex, ColumnIndex) < Crit_coh Or Valeur_H1(RowIndex, ColumnIndex) = "" Then                                                          'On compare la valeur de cohérence pour cette Fréquence / distance est supérieur au critère de cohérence
          Valeur_H1(RowIndex, ColumnIndex) = ""      'Si cette valeur est inférieur au critère de cohérence, la valeur de H1 correspondant est remplacée par une cellule vide
         Else: Valeur_H1(RowIndex, ColumnIndex) = Valeur_H1(RowIndex, ColumnIndex) / (2 * Pi * Valeur_BF(RowIndex, 1)) 
     End If
Next
Next

'On remplace les valeurs des tableau par le résultat de la boucle précédente.
Plage_H1.Value = Valeur_H1

Ce traitement est appliqué successivement à un 20aine de tableau.

Voilà le problème :

Lorsque je lance la macro depuis la console VBA, aucun problème, l'opération se fait complément. Mais si je lance par un bouton depuis la feuille excel, alors la boucle ne s'effectue que sur le 13 premières lignes. Et toujours 13 pour tous les tableau. La macro ne s'interrompt pas, elle poursuit aux étapes suivantes du traitement, mais ne travaille que les 13 premières lignes...

Je relance alors depuis la console VBA, et ça ne traite que les 13 première lignes à nouveau. Au bout d'un temps, le lancement depuis la console se remet à fonctionner pour l'ensemble du tableau, sans toutefois toucher au code.

Le déclanchement d'un macro par un bouton est donc susceptible d'impacter le fonctionnement de cette dernière ? Un problème de mémoire peut-être.. ?

J'espère avoir été clair, je vous remercie du temps que vous prendrez pour me lire.

Bien cordialement,

Bonsoir,

Essayez ceci : Plage_H1.Value = Application.Transpose(Valeur_H1)
Ceci afin de redresser par rapport à vos feuille le tableau VBA créé.
Mais bon comme Bizarre le sous-entend, avec un fichier c'est mieux non ?

@ bientôt

LouReeD

bonjour,

sur quelle feuille se trouve le bouton ? sur quelle feuille se trouvent les données ? comment est définie Plage.H1 ? le nom de la feuille y est-il bien mentionné ?

Le fichier en PJ, ce sera plus simple.
J'ai allégé le document pour pouvoir le passer (il n'y a plus 2050 ligne de données à traiter mais un 100aine).

Je me rend alors compte que seules les 3 premières lignes sont traitées en passant par le bouton, et non les 13 premières come lorsqu'il y 2000 lignes à traiter. Le lancement depuis la console VBA se déroule toujours correctement.

La macro à lancer par le bouton ou par la console est "Traitement_data()". Le bouton est dans l'onglet "Import_DATA".

Bonjour,

corrige la ligne concernant le variable Derlig, ainsi

DerLig = ThisWorkbook.Sheets("DATA").Range("B" & Rows.Count).End(xlUp).Row    

au lieu de

DerLig = Range("B" & Rows.Count).End(xlUp).Row    

C'était si bête que cela.....

Un grand merci ! :)

Bonjour,

comme quoi avec un fichier... On ne le dira jamais assez !

@ bientôt

LouReeD

Rechercher des sujets similaires à "comportement macro different methode lancement"