formule pour cacher une ligne entiere

  • Initiateur de la discussion didiercoca
  • Date de début
D

didiercoca

Guest
bonjour a tous

je travaille dans un fichier de 3 pages sous excel
sur la premiere page sous la denomination "stock" sont repris tous mes produits
sur la deuxieme page sont reprises mes ventes
sur la troisieme page sont reprises mes rentrées de stock

je cherche une formule qui me permettrait de cacher une ligne entiere (uniquement sur la premiere feuille) lorsque mon stock est egal a 0
mais lorsque une rentrée a ete effectuee j aimerai que cette ligne reapparaisse automatiquement...
je ne sais pas si j ai ete assez clair? j attend avec impatience de vos nouvelles et merci d avance
didier
 

Pièces jointes

  • POSmagasin.zip
    40 KB · Affichages: 28
  • POSmagasin.zip
    40 KB · Affichages: 27
  • POSmagasin.zip
    40 KB · Affichages: 24
R

Ronan

Guest
Bonsoir,

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 6 Then
If Target.Value = 0 Then
Rows(Target.Row).EntireRow.Hidden = True
Else
Rows(Target.Row).EntireRow.Hidden = False
End If
End If
End Sub

Code à mettre dans une procédure Change de la feuille concernée.
Vérifie le contenu de la colonne 6 ou F (colonne contenant le stock total)

A chaque changement de la valeur dans une cellule de la colonne 6, le programme teste la valeur inscrite & si elle est = à 0, la ligne est masquée, sinon, la ligne est démasquée.

@+

Ronan
 
D

didiercoca

Guest
merci bcp ronan....
mais ca ne marche pâs.... ou alors je fais une fausse manoeuvre... je ne fais que debuter sous excel
j ai donc cliquer sur la bonne feuille visualiser le code et copier coller ce que tu m indiques et qd je ferme et reouvre le dossier j active les macros mais rien ne change...
as tu essaye toi sur mon fichier joint a mon premier message? cela marchait??
si tu en as l occasion cela me ferait plaisir une explication supplementaire
merci d avnce
didier
 
R

Ronan

Guest
Bonjour,

Voici un exemple dans ton classeur.
Désolé, je me suis mal exprimé.

Cette macro est dans le module Worksheet des 2 feuilles Entrees & Sorties

Elle fonctionne, je l'ai testé

En fait, à chaque fois qu'une valeur change dans la feuille Entrees ou Sorties, le programme scan la plage I5:I384 de la feuille Stock et masque la ligne si la valeur est = à 0. Le programme trouve lui-même la dernière ligne de la plage (ici, 384) grâce à la fonction ".cells(65536,9).end(xlup).row"

Private Sub Worksheet_Change(ByVal Target As Range)
Dim plage As Range, valeur As Range
With Sheets("stock")
Set plage = .Range("i5:i" & .cells(65536,9).end(xlup).row)
For Each valeur In plage
If valeur = 0 Then
.Rows(valeur.Row).EntireRow.Hidden = True
Else
.Rows(valeur.Row).EntireRow.Hidden = False
End If
Next
End With
End Sub

@+

Ronan
 

Pièces jointes

  • POSmagasin.zip
    39.1 KB · Affichages: 33
  • POSmagasin.zip
    39.1 KB · Affichages: 31
  • POSmagasin.zip
    39.1 KB · Affichages: 30
D

didiercoca

Guest
ca a l air parfait.... un tres grand merci ronan

mais dis moi est il possible de trouver un site qui explique ces differentes macros?? tu inventes tout cela ou tu les as lu qq part??

un tout grand merci en tous cas.....
 
D

didiercoca

Guest
mais j ai juste encore une petite question....
si je veux inserer une nouvelle ligne dans la premiere feuille ( un nouveau produit qui rentre en stock par exemple) je peux ouvrir le dossier sans activer les macros inserer la ligne puis reactiver les macros??? cela ne va pas perturber le bon fonctionnement des macros a la prochaine ouverture?
encore une fois ...un grd merci
 
D

didiercoca

Guest
rebonsoir ronan,je viens d essayer cela et malheureusement les lignes que j ai reouvertes manuellement pour inserer une nouvelle ligne restent apparentes meme en reactivant les macros
je suis malheureusement obligé de reouvrir certaines lignes pour inserer des nouvelles car comme tous mes articles ont un code je dois imperativement les laisser dans l ordre croissant....
hum.... ca commence a devenir tres complique tout ca non?
 
R

Ronan

Guest
Bonjour,

Concernant les macros, ceci est un language de programmation.
Tu as l'aide de VBA qui explique toutes les fonctions disponibles.
Pour bien faire, tu commences avec l'enregistreur de macros et tu analyses chaque ligne de code créée. Petit à petit, tu apprendras le language.
Et bien sûr, tu as le forum. Une grosse source d'apprentissage.

Concernant les nouveaux produits, j'ai refais ton fichier en supprimant toutes les lignes vides existantes. De cette manière, à chaque fois que tu créeras un nouvel article, tu le saisis à la suite dans tes 3 feuilles et c'est reparti pour un tour.

Le problème est que le programme se lance à chaque changement des les feuilles Entrees & Sorties donc, le mieux, est de créer l'article en premier dans la feuille Stock et après dans les 2 autres feuilles.

@+

Ronan
 

Pièces jointes

  • POSmagasin.zip
    33.6 KB · Affichages: 30
  • POSmagasin.zip
    33.6 KB · Affichages: 28
  • POSmagasin.zip
    33.6 KB · Affichages: 26
D

didiercoca

Guest
merci encore une fois pour tous tes conseils mais.....

lorsque je reinsere une nouvelle ligne meme en bas du fichier (ce qui au depart est embetant car je ne respecte plus l ordre croissant des codes articles ce qui est important pour moi) et bien meme avec un solde de 0 cette ligne reste apparente...
peut etre devrais je creer tous les codes possible entre le premier et le dernier (cela fait qd meme +- 6000 lignes) puis activer la macros donc celles qui ne seront pas remplies (donc egales a 0) disparaitront automatiquement??? mais est ce la bonne solution??
je te parait peut etre un peu "embetant " avec toutes ces questions mais le travail que tu as realisé ne peux pas m etre utile si je ne peux reinserer des lignes (ce que je fais presque tous les jours selon les arrivages) et que les numeros de code n apparaissent pas ds l ordre croissant....
encore merci et.... bonne soiree et bonne fin de week end!
 
R

Ronan

Guest
Bonsoir,

Dans l'exemple ci-dessus, quand j'insère une ligne dans la feuille Stock (à n'importe quel endroit), il est vrai que la ligne reste apparente mais ceci est tout à fait normal puisque les procédures sont faites pour se déclencher uniquement en cas de changement dans les feuilles Positif & Négatif.

Donc, après avoir créer une nouvelle référence dans la feuille Stock, tu es obligé, également, de la créer dans les feuilles Positif & Négatif ce qui aura pour effet de déclencher les procédures. Je l'ai testé et ça fonctionne.

Par contre, il ne faut pas oublier de recopier les formules présentes dans la feuille stock dans la nouvelle ligne insérée et ne pas oublier, également, d'insérer, dans les autres feuilles, les lignes au même endroit que dans la feuille Stock.

Mais bon, à l'origine, tout ceci était fait pour faire avancer le schmilblick.

Il est vrai, par contre, que tes procédures sont assez lourdes. Etre obligé, dans un premier temps, d'executer 3 manipulations pour insérer une nouvelle référence et tout ça, en restant cohérent !!!

Une petite Appli en VBA te serait bien utile mais il faut des connaissances et y passer du temps. Pas toujours évident.

@+

Ronan
 
N

Nikom

Guest
Bonjour le forum

j'ai appliqué la formule à mes besoins,

2 questions me viennent à l'esprit:

1) comment faire pour que la procédure se déclanche tout le temps (dans mon cas, c'est lorsque je modifie une liste déroulante)

2) comment faire pour séléctionner une plage de cellules qui, en se modifiant, déclancheront la procédure? (ceci, de façon à ce que la procédure ne se déclanche pas sans arrêt)


merci

Nikom
 
N

Nikom

Guest
bonjour ronan, le forum...

en fait, j'ai trouvé tout seul la solution à mon problème, j'ai fait "affecter une macro" à ma liste déroulante. Ainsi, les lignes ne se cachent ou ne s'affichent que lorsque je modifie la liste déroulante. c'était tout bête. merci quand même.

a+
Nikom
 

Discussions similaires

Réponses
11
Affichages
574

Statistiques des forums

Discussions
312 763
Messages
2 091 858
Membres
105 079
dernier inscrit
Biscot_399