Excel VBA Macro ... je craque
Nico_imuh
-
Patrice33740 Messages postés 8561 Date d'inscription Statut Membre Dernière intervention -
Patrice33740 Messages postés 8561 Date d'inscription Statut Membre Dernière intervention -
Bonjour, à toutes, à tous,
Je suis nouvel utilisateur (en tant que posteur), mais je vous suis reconnaissant depuis de longue années, tant vous m'avez apporté de solutions.
Voilà je vous explique mon problème.
Je n'ai jamais pris de cours d'excel ou VBA seulement, ai tout appris seul. J'ai un petite société de location de matériel, et pour bien gérer cette affaire il me faut un tableur pour avoir un visu sur les plannings de sortie/retour de matériel.... semaine par semaine bref...
je ne pense pas pouvoir uploader de piece jointe donc j'explique la requête :)
Donc il y a 3 types de feuilles
- Celle qui a le stock (reference + quantité)
- Celle ou j'intègre les commandes (ref + quantité + jour de sortie + jour de retour)
- Celles de planning d'une semaine, en colonnes jours de la semaine; en ligne références produits (donc chaque cellule affiche le cumul de produits commandés sur une même référénce le même jour)
A celà ai-je ajouté une mise en forme conditionnelle me mettant en rouge la cellule (ref + produit & jour) où une référence est commandé en trop grande quantité par rapport au stock
Donc il y a 300+ lignes de ref, et je ne peux pas passer mon temps à scroll de haut en bas, comme si chercher l'aiguille dans la botte de foin (tout cela est supposé m'aider je précise...)
Donc mon idée est la suivante : créer un script via VBA pour que les lignes de référence produit n'étant pas commandé du tout de la semaine soit "cachées", et donc avoir un visu beaucoup plus propre et efficace,
Par avance merciiiiiiiiii
( j'ai trouvé ça,
Sub MasquerLignesVide()
' Macro réalisé par Excel-lent
For i = [A65536].End(xlUp).Row To 2 Step -1
If Application.WorksheetFunction.CountBlank(Range(Cells(i, 2), Cells(i, 8))) = 7 Then
Rows(i).EntireRow.Hidden = True
End If
Next i
End Sub
mais les dites cellules ne sont pas vides.....
elles ont plutot :
=SUMPRODUCT(((année!$A$2:année!$A$1000)=$A2)*((année!$C$2:année!$C$1000)<=B$1)*((année!$D$2:année!$D$1000)>=B$1)*(année!$E$2:année!$E$1000))
)
Je suis nouvel utilisateur (en tant que posteur), mais je vous suis reconnaissant depuis de longue années, tant vous m'avez apporté de solutions.
Voilà je vous explique mon problème.
Je n'ai jamais pris de cours d'excel ou VBA seulement, ai tout appris seul. J'ai un petite société de location de matériel, et pour bien gérer cette affaire il me faut un tableur pour avoir un visu sur les plannings de sortie/retour de matériel.... semaine par semaine bref...
je ne pense pas pouvoir uploader de piece jointe donc j'explique la requête :)
Donc il y a 3 types de feuilles
- Celle qui a le stock (reference + quantité)
- Celle ou j'intègre les commandes (ref + quantité + jour de sortie + jour de retour)
- Celles de planning d'une semaine, en colonnes jours de la semaine; en ligne références produits (donc chaque cellule affiche le cumul de produits commandés sur une même référénce le même jour)
A celà ai-je ajouté une mise en forme conditionnelle me mettant en rouge la cellule (ref + produit & jour) où une référence est commandé en trop grande quantité par rapport au stock
Donc il y a 300+ lignes de ref, et je ne peux pas passer mon temps à scroll de haut en bas, comme si chercher l'aiguille dans la botte de foin (tout cela est supposé m'aider je précise...)
Donc mon idée est la suivante : créer un script via VBA pour que les lignes de référence produit n'étant pas commandé du tout de la semaine soit "cachées", et donc avoir un visu beaucoup plus propre et efficace,
Par avance merciiiiiiiiii
( j'ai trouvé ça,
Sub MasquerLignesVide()
' Macro réalisé par Excel-lent
For i = [A65536].End(xlUp).Row To 2 Step -1
If Application.WorksheetFunction.CountBlank(Range(Cells(i, 2), Cells(i, 8))) = 7 Then
Rows(i).EntireRow.Hidden = True
End If
Next i
End Sub
mais les dites cellules ne sont pas vides.....
elles ont plutot :
=SUMPRODUCT(((année!$A$2:année!$A$1000)=$A2)*((année!$C$2:année!$C$1000)<=B$1)*((année!$D$2:année!$D$1000)>=B$1)*(année!$E$2:année!$E$1000))
)
A voir également:
- Excel VBA Macro ... je craque
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
1 réponse
Bonjour,
pourtant un fichier restreint créer pour l'occasion aurait été le bienvenu.
Et c'est ainsi que tu auras plus de chance d'avoir qcq chose qui fonctionne sans à avoir à l'adapter.
For lig = [A65536].End(xlUp).Row To 2 Step -1
Rows(lig).EntireRow.Hidden = cells(lig,"C")<>0
Next lig
Ca sera la seule proposition sans fichier.
Mais c'est sans doute plus simple et suffisant de mettre un filtre automatique.
eric
pourtant un fichier restreint créer pour l'occasion aurait été le bienvenu.
Et c'est ainsi que tu auras plus de chance d'avoir qcq chose qui fonctionne sans à avoir à l'adapter.
For lig = [A65536].End(xlUp).Row To 2 Step -1
Rows(lig).EntireRow.Hidden = cells(lig,"C")<>0
Next lig
Ca sera la seule proposition sans fichier.
Mais c'est sans doute plus simple et suffisant de mettre un filtre automatique.
eric
Je vote aussi pour le filtre !!!
Patrice