afficher ou masquer une ligne en fonction d'une cellule

LILOUM44

XLDnaute Nouveau
Bonjour à tous,

Etant novice en VBA, je vous sollicite pour la première fois car je souhaite insérer une macro dans un projet professionnel. Cette macro me permettrait de masquer la ligne 23 si la cellule B23 est vide. Si il y a une valeur dans la cellule B23 alors la ligne 23 s'affiche. Je souhaiterai que cette macro se réalise automatiquement lors de l'évolution des données dans la cellule B23.
J'espère avoir été assez clair dans mes explications.

Nouvelle demande, je souhaiterai également faire apparaitre une image sur laquelle est lié un lien hypertext vers un site internet.. Cette image apparaitrait si la valeur PERSONNEL se trouve dans la cellule B15.

Pour votre information pour la première demande, je tiens à préciser que la cellule B23 est une cellule fusionnée les cellules C23,D23,E23;F23.

Je ne peux vous joindre mon document car vous comprendrez aisément que c'est un fichier professionnel avec des informations commercialement très sensibles.
Merci de votre aide.
A très bientôt.
 

fanfan38

XLDnaute Barbatruc
Re : afficher ou masquer une ligne en fonction d'une cellule

Bonjour
On ne demande pas les originaux mais pense bien que pour résoudre ton problème sérieusement on va ouvrir excel et faire in fichier qui ressemble à tes dire...
C'est ce fichier là qui nous permettrai de bien nous comprendre...
Comment va tu remplir la cellule B23 si elle est masqué?
cliquer sur le nom de la feuille avec le bouton droit et sélectionner "visualiser le code" et copier la macro ci dessous
Private Sub Worksheet_Change(ByVal Target As Range)
If Len(Range("B23").Value) > 0 Then
Rows(23).EntireRow.Hidden = True
Else
Rows(23).EntireRow.Hidden = False
End If
End Sub

Pour l'image peut on avoir le lien (ou un autre) sur l'image à inserer?

A+ François
 

LILOUM44

XLDnaute Nouveau
Re : afficher ou masquer une ligne en fonction d'une cellule

Merci FANFAN pour tes précieux conseils, je regarde cela ce soir pour voir si cela fonctionne......

Pour mon info, comment puis je appliquer ta macro pour l'image. Quelle action dois je réaliser pour appliquer ta macro sur mon image dans mon doc ?
Faut il que je renomme mon image avec le nom IMAGE1.......

Je vous avez prevenu, je débute....

Merci pour tes infos..
 

fanfan38

XLDnaute Barbatruc
Re : afficher ou masquer une ligne en fonction d'une cellule

Pour l'image: (sur votre document)
cliquer sur affichage, barre d'outils, boite à outils contrôle
l'avant dernier icône est un contrôle image.
Cliquer dessus et ce mettre à l'emplacement souhaité (on peut le déplacer)
Cliquer sur l'emplacement du coin haut gauche et sans relâcher le bouton de la souris descendre et tirer à droite pour obtenir la taille souhaitée...
Clic droit sur ce contrôle et choisir "propriétés"
Descendre à picture et cliquer sur les 3 points pour sélectionner une image
fermer la fenêtre "propriétés"
Cliquer ensuite sur insertion (dans le menu en haut), lien hypertexte
Saisir en bas l'adresse internet
cliquer sur l'équerre de la boite à outils contrôle pour quitter le mode création et fermer la boite à outils contrôle
Ensuite double clic sur l'image pour arriver en VBA
recopier la ligne ci dessous entre les 2 lignes: private sub et end sub
ActiveSheet.Shapes(1).Hyperlink.Follow NewWindow:=True
Si il y a plusieurs images changer le chiffre après Shapes...

A+ François
 
Dernière édition:

LILOUM44

XLDnaute Nouveau
Re : afficher ou masquer une ligne en fonction d'une cellule

Je viens de tester pour l'image ...
Ca marche bien en fonction de la cellule mais le lien ne fonctionne pas car quand je clique sur l'image il m'informe qu'il y a un beug concernant la macro et il me souligne en jaune l'instruction suivante :
ActiveSheet.Shapes(1).Hyperlink.Follow NewWindow:=True

Pourtant il me semble avoir respecter à la lettre tes instructions et avant de saisir les macros j'ai testé le lien hypertext et cela fonctionnait......

Que ce passe t'il ?
 

LILOUM44

XLDnaute Nouveau
Re : afficher ou masquer une ligne en fonction d'une cellule

SI cela peut t'aider FANFAN, je viens de m'appercevoir que le lien marche quand je suis en mode création (equerre sélectionnée) mais quand je n'y suis plus cela ne fonctionne plus et il m'informe d'un beug sur la macro concernant la ligne que je t'ai indiqué.
 

fanfan38

XLDnaute Barbatruc
Re : afficher ou masquer une ligne en fonction d'une cellule

Bonjour
Peux tu copier/coller la macro?
pour masquer une colonne
if range("a1").value="BATEAU" then
Columns("I:I").EntireColumn.Hidden = true
else
Columns("I:I").EntireColumn.Hidden = False
endif

A+ François
 

LILOUM44

XLDnaute Nouveau
Re : afficher ou masquer une ligne en fonction d'une cellule

FANFAN,

je suis en pleine galère car le lien de l'image ne marche pas quand je ne suis plus en mode création (equerre n est plus sélectionné).
Quand je double clique sur l'image, le lien hypertext ne fonctionne pas et j'ai un message d'anomalie qui s'affiche :
Erreur d'exécution '1004': Erreur definie par l'application ou par objet

Je te fais également une copie de la macro que j'ai saisie..... :

Private Sub Image1_Click()
ActiveSheet.Shapes(1).Hyperlink.Follow NewWindow:=True
End Sub

Pour ton info elle s'affiche et se masque bien en fonction de la valeur de la cellule mais malheureusement le lien hypertext ne fonctionne pas et là c'est génant.
Merci pour votre aide amis internautes
 

fanfan38

XLDnaute Barbatruc
Re : afficher ou masquer une ligne en fonction d'une cellule

Salut Liloum
Je ne comprends pas pourquoi tu as ce message d'erreur.
Y a t'il plusieurs objets sur la feuille?
En mode création, quand tu double clic sur l'image, tu arrives bien dans la macro?
Essaie de supprimer l'image et de recommencer...

A+ François
 

Wotbill

XLDnaute Nouveau
Re : afficher ou masquer une ligne en fonction d'une cellule

Bonjour Fanfan et tout d'abord merci pour ces précieux conseils qui m'ont permis de régler un pb que j'avais depuis des mois !!!!

J'ai une petite question : Comment faire si je souhaite masquer plusieurs lignes au lieu d'une seule ?

Merci d'avance !!

Encore une petite précision :

Je voudrais qu'en fonction du résultat d'une cellule, je puisse masquer les lignes 25 à 29, et qu'en fonction du résultat d'une autre cellule, je puisse masquer les lignes 34, 58, 12 et 32.

Je sais ça peut parraitre tordu, mais je travaille dans l'agroalimentaire, et cette partie de programme me permettra de créer des résultats d'analyses propres !!!
 
Dernière édition:

fanfan38

XLDnaute Barbatruc
Re : afficher ou masquer une ligne en fonction d'une cellule

Bonjour Wotbill
Pour masquer une ligne il faut utiliser la fonction hidden (voir l'exemple ci joint)
Private Sub Worksheet_Change(ByVal Target As Range)
'pour la cellule A1, si A1=10 masque les lignes 25 à 29
If Target.Row = 1 And Target.Column = 1 Then
If Target.Value = 10 Then
Rows("25:29").Select
Selection.EntireRow.Hidden = True
Range("A31").Select
Else
Rows("25:29").Select
Selection.EntireRow.Hidden = False
Range("A31").Select
End If
End If
End Sub

Cette macro est à mettre dans les macros de la feuille concernée
(clic droit sur la feuille concernée, choisir "Visualiser le code" et copier la macro ci dessus
A+ François
 

jossboss

XLDnaute Nouveau
Re : afficher ou masquer une ligne en fonction d'une cellule

Bonjour à tous,
Je suis novice avec Excel...
J'ai besoin de vos services pour m'aider à réaliser une macro ?

J'utilise excel pour faire des devis, factures, contrats,...
Feuille 1 : je rentre les données des clients, ce qu'il recherche...
Page devis : cela me fait le devis en fonction des clients. (devis d'environ 10 pages).

ce que je n'arrive pas à faire :
lorsque une cellule =0 dans la feuille 1 cela supprime une page du devis qui comporte du texte, des photos,...

Comment faire ?
Merci Beaucoup !
Josselin
 

Discussions similaires