Fonctions VBA se desactivent

Bonjour,

J'ai code un petit userform qui permet en gros de faire un copier coller d'une plage de cellules de ma page "Tabelle1" jusqu'a ma page "Ergebnis" en gardant la mise en forme de ces cellules.

Je vous joins une partie de ce fichier (avec environ le dixieme de la base de donnees originale)

Certaines des colonnes de la base de donnees sont remplies a l'aide de fonctions que j'ai codees dans le modul1.

Voila mon probleme:

Si vous testez l'Userform, il va marcher (Bien que de nombreuses choses doivent etre encore optimisees..)

MAIS:

Dans les objets excels sur la feuille Tabelle1 vous pouvez voir:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Calculate
End Sub

Meme si j'ai ecrit ce code uniquement pour faire un test, vous voyez deja (normalement) que les fonctions ne se remettent pas a jour a chaque fois que vous selectionner une nouvelle cellule...

Sur mon ordinateur, meme appuyer sur F9 ne met pas a jour les fonctions.

Maintenant si vous modifier quoi que ce soit dans le code.

Par exemple remplacer le code ci dessus par:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Calculate
' => juste sauter une ligne, ce qui ne devrait avoir aucune influence sur le code
End Sub

Vous voyez maintenant que la fonction remarche (par magie)...

Si vous relancez maintenant mon userform, a l'appui sur le bouton final "OK", vous desactivez toutes les fonctions qui se trouve dans ma page "Tabelle1" et je ne comprends pas pourquoi...

Sur mon ordinateur cela se passe a la ligne:

Sheets("Ergebnis").Range("A1:M20").ClearContents

Tout ce que je tente de vous expliquer n'est vraiment pas clair. Si vous avez le courage de faire quelques tests sur l'userform, j'espere que vous comprendrez mon probleme.

Et si vous avez une solution, je vous remercie

14exemplepb.xlsm (82.54 Ko)

Bonjour

Dans toutes tes fonctions rajoutes la ligne surlignée

Exemple

Function namme(cellule As Range) As String
    Dim i As Integer
    Application.Volatile
    For i = 2 To 15
        If cellule.Text = Sheets("tblLacke").Cells(i, 2).Text Then
            namme = Sheets("tblLacke").Cells(i, 5).Value
        End If
    Next
End Function

Extrait de l'aide

Cette méthode marque comme volatile une fonction personnalisée. Une fonction volatile doit être recalculée chaque fois qu'un calcul est effectué dans une cellule quelconque de la feuille de calcul. Une fonction non volatile n'est recalculée qu'en cas de changement des variables d'entrée. Cette méthode est sans effet si elle ne se trouve pas à l'intérieur d'une fonction définie par l'utilisateur utilisée pour calculer une cellule de feuille de calcul.

Je testerai ça en revenant au bureau lundi mais merci.

Je clôturerai ce sujet une fois que la solution sera testée

Rechercher des sujets similaires à "fonctions vba desactivent"