Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

fonction perso sous excel

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.
 
M

myDearFriend!

Guest
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

 
R

Rouch

Guest
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
 
G

gothico

Guest
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?
 
G

gothico

Guest
Pour faire plus simple, en fait, je crois qu'il vaut mieux que je le fasse comme tu as dis (suppression ligne si AX est vide), mais comment je fais le parcours de toutes les cellules AX en VBA?
 
G

gothico

Guest
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?
 

Discussions similaires

Réponses
12
Affichages
665
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…