fonction perso sous excel

  • Initiateur de la discussion Initiateur de la discussion gothico
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

G

gothico

Guest
Bonjour,
Je fais actuellement sous excel ceci : =SI(Feuil1!C1="Machaine";A1;"").
Quand "Machaine" de la feuille 1 est présente sur C1, cela affiche A1 sinon cela n'affiche rien.
J'aimerais remplacer le n'affiche rien, par un supprime ligne.

J'ai donc fais une fonction dans un module de mon classeur qui est la suivante :

Public Function SupprLigne()
ActiveCell.EntireRow.Delete
End Function


et je l'appel comme cela : =SI(Feuil1!C1="Machaine";A1;SupprLigne()).

Le probleme est que excel me renvoie #NOM? et j'arrive pas à comprendre pourquoi....... Il trouve pas la fonction.......

Merci pour votre aide.
 
Bonsoir Gothico, Chris, le Forum.

En complément de la réponse de Chris (que je salue au passage) :

            On peut faire appel à une fonction personnalisée dans une formule d'une feuille de calcul à la seule
            condition que cette fonction soit "passive", c'est à dire qu'elle est sensée retourner une valeur de
            résultat mais ne peut en aucun cas manipuler les objets.

Ta fonction SupprLigne() appelée depuis la feuille te retourne donc une erreur à cause de
ActiveCell.EntireRow.Delete

Cordialement,
Didier_mDF

myDearFriend-3.gif
 
Salut,

Ce que tu cherche à faire ne peux pas fonctionner. Ce n'est pas une une fonction mais uns procédure.
Une fonction doit renvoyer une valeur comme le fait remarquer Chris et ne peux pas supprimer de ligne.

D'autre part ce que tu souhaites faire ne peut pas marcher car tu dis dans une cellule que si A1 est vide alors on supprime la ligne entière, donc la ligne ou il y a ton test. C'est un peut le serpent qui se mord la Queue.

Que veux tu faire exactement? Supprimer la ligne si on efface la cellule A1?

Dans ce cas il faut utiliser une macro évenementielle qui test toute modification de la cellule A1. Et si jamais on vide la valeur, alors la macro supprime la ligne. ( En utilisant par exemple l'évènement Private Sub Worksheet_Change)

@+
Xavier
 
Non, je veux supprimer la ligne que si la valeur C1 de la feuille 1 est égal à la chaine en question. Donc ca ne se mort pas la queue.

Mais ma réponse doit etre dans ces macros evenmentielle, mais dans ce cas, je dois faire le SI dans la macro?
 
J'ai réussi en faisant ca :

Private Sub Worksheet_Change()
Dim Ligne As Byte, Col As Byte
Col = 1
For Ligne = 1 To 20
If (Cells(Ligne, Col) = "") Then
Cells(Ligne, Col).EntireRow.Delete
End If
Next Ligne
End Sub

Mais cela ne s'execute pas quand il y a un changement, comment ca se fait?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
1
Affichages
2 K
Retour