Macro qui se désactive en changeant de fenêtre

Bonjour à tous et a toutes,

Je vous présente mon problème et vous remercie d'avance de votre aide.

Voila j'ai 2 documents qui comportent diverses données. Je suis débutant en Excel et VBA mais j'ai réussi à intégrer une macro qui me permet de récupérer une donnée de la feuille précédente. hors quand je passe d'un document à l'autre, le document sur lequel je ne suis plus, désactive ma macro ce qui provoque diverses erreurs qui m'empêche de comparer les 2 documents de manière fluide.

En espérant avoir été claire.

Merci.

Bonjour,

Est-il possible de poster le code ?

En fait, il faut essayer tant que possible de définir les objets sur lesquels on travaille de manière à lever toute ambiguité. Exemple :

sub test()

with workbooks("classeurautre.xslm") 'nécessite qu'il soit ouvert
    with .sheets("feuilleautre") 'feuille "feuilleautre" de "classeurautre.xlsm"
        .cells(1, 1) = "test" 'on écrit test en A1
    end with
    .sheets(2).range("A1") = "feuille2" 'on ecrit feuille2 en A1 de la feuille2
end with

with thisworkbook.sheets("mafeuille")
    .cells(1, 1) = "classeur executant"
end with

end sub

On définit les objets en fonction de leur nom ou leur index dans la collection parente (workbooks, sheets, ...) et pour les range, également avec des références. On cible les cellules en préservant le lien avec l'objet parent grâce à des points et le cas échéant des blocs with.

Cdlt,

Bonjour,

voila la macro qui est entrée dans VBA.

Function FeuilPrec(rRng As Excel.Range) As Variant
' Exemple dans une cellule  =FeuilPrec(A1)
  Dim nIndex As Integer
  Application.Volatile
  If rRng Is Nothing Then Set rRng = Application.Caller
  nIndex = rRng.Parent.Index
     If nIndex > 1 Then
        Set FeuilPrec = Sheets(nIndex - 1).Range(rRng.Address)
     Else
        FeuilPrec = CVErr(xlErrRef)
     End If

End Function
Globalement elle fonctionne très bien mais c'est juste qu'une fois que je change de fichier elle se coupe sur l'un.

Bonsoir,

Bizarre, à première vue, je ne rencontre pas de problème en passant d'un document à l'autre...

Pouvez-vous essayer ceci :

Function FeuilPrec(rRng As Excel.Range) As Variant
Application.Volatile
FeuilPrec = rRng.parent.previous.Range(rRng.Address).value
End Function

Je pense que c'est le Application.caller qui est en cause. D'une manière ou d'une autre, vous exécutez du code dans le second fichier et ça crée probablement un problème.

Par ailleurs, j'ai l'impression que cette fonction a un intérêt limité et qu'il existe peut-être des alternatives car ce n'est pas forcément l'idéal en faisant la navette entre 2 fichiers...

Cdlt,

personne n'a d'idée qui pourrait m'aider ?

merci 3GB. ton code fonctionne parfaitement, et il est si simple. c'est top. je ne comprends pas ce qui ne fonctionnait pas avec l'autre.

J'ai cru que mon message était passé inaperçu ! Je pense que c'est le application.caller qui créait une perturbation car j'ai l'intuition que du code était exécuté pendant ce passage à l'autre fichier.

Cdlt,

Certainement. en tout cas problème résolu

Merci.

Rechercher des sujets similaires à "macro qui desactive changeant fenetre"