Remplissage automatique en fonction des besoins

Bonjour à tous,
Un nouveau sujet à vous soumettre concernant un tableau ou je souhaite en fonction d’un planning pouvoir remplir automatiquement une liste de matériel nécessaire.
Ci joint le tableau avec un exemple dans l’onglet « requête ».
Merci d’avance.
Franck.
TEST MISE EN PLACE MATERIEL .xlsx (83,5 Ko)

Bonjour

Ci-joint ma proposition

Onglet « PLANNING SEMAINE » cliques sur le bouton « Traitement »

Regardes le résultat dans les onglets de la semaine

Essaies et dis moi

Attention fichier de type « .xlsm » nécessaire pour les traitements en VBA

TEST MISE EN PLACE MATERIEL .xlsm (99,0 Ko)

Merci FFO !!
une fois de plus tu as su répondre a mes attentes ,c’est tout à fait ce dont j’avais besoin.
J’ai du coup transposé une partie de la macro dans un autre tableau et cela fonctionne à merveille ,tu as donc fait d’une pierre deux coups !!
Mais dans le tableau que j’ai modifié j’ai du dupliquer la feuille initiale ou les éléments étaient renseignés manuellement et chaque jour ,d’où tout l’intérêt de la macro que tu as réalisé,et lorsque que j’imprime je n’arrive pas a retrouver la mise en page de la feuille initiale sur les duplicata.
Il y a une mise en page spécifique qui génère un en tête sur chaque feuille imprimé ce que je n’arrive pas a reproduire .
Je te joint le tableau pour que tu puisses y jeter un œil .
Encore merci de ton aide si précieuse .
Bonne journée a toi ,
Franck.
test mise en page .xlsm (2,6 Mo)

Bonjour
Merci pour ce retour
Ravi de t avoir aidé une fois de plus
Je regarde ton dernier fichier et te dis

J’ai oublié de mentionner que l’onglet Lundi est la feuille initiale, c’est celle-ci et son format d’impression que je souhaite dupliquer pour les autres jours de la semaine.
Franck.

J’ai regardé

Pour moi le plus simple serait à partir de l’onglet « LUNDI » vidé des données non fixes propres à chaque jour de la semaine de réaliser une copie au nom de chaque jour ainsi :

Clique droit sur le nom de l’onglet « LUNDI »

choisir dans la liste « Déplacer ou copier »

Dans la fenêtre suivante côcher en bas « Créer une copie »

Puis OK

Renommer le nom du nouvel onglet au nom d’un jour de la semaine

Ici « MERCREDI »

A réaliser à la main ou un traitement automatique peut être intégré avec un bouton pour l’activer

Ci-après un exemple de traitement automatique

test mise en page2 .xlsm (417,6 Ko)

Cliques sue le bouton « Création » onglet « Création onglets »

A toi de me dire

Super ,
j’ai toute mes réponses et encore une fois j’ai appris beaucoup de choses !!
Merci FFO ,
au plaisir !!
Franck .

Au plaisir à nouveau de t aider
Que cet outil te donne un plus appréciable dans ton activité
À bientôt peut être

Encore une toute dernière question pour finir !!

Je souhaite pouvoir filtrer les cellules vides sur une plage definie uniquement si toutes ne sont pas vides et si toutes sont vides le filtre ne s’active pas .
Merci,
Franck .

Oui effectivement pour activer un filtre dans une plage il faut minimum 2 valeurs différentes ce qui justifie celui-ci
Si qu’une seule valeur dans la plage le filtre n’a plus sa raison d’être
Pour contourner cette difficulté mets dans la toute première cellule de la plage à filtrer un espace
Ainsi le filtre pourra s’activer

Essaies et dis moi

Un espace, tu veux dire :
Range(« 21 :24 ») ou Range(" 21:24")??

Non je parle d’un espace en tant que donnée dans la toute première cellule de la plage
Par exemple en colonne A si je clique sur l’icone Filtrer de l’onglet « Données » de la barre d’Excel j’obtiens ceci car toute la colonne est vide :

si en cellule A1 j’intègre un espace donc la cellule n’est plus vide et donc la colonne non plus avec la même manipulation j’ai le filtre dans cette colonne :

Petite flèche du filtre en cellule A1

Un moyen de contourner la difficulté de mettre un filtre sur une plage de cellules vides

A tester

En fait je me suis mal exprimé ,les cellules ne sont pas vides car elles contiennent des formules mais que je souhaite masquer lorsqu’il n’y a pas de résultat ,mais je ne souhaite pas que le filtre fonctionne si il n’y a aucun résultat dans la cellule.
Je complique toujours les choses :wink: :wink: :wink:
Franck .

Ne peux tu pas mettre dans la première cellule de ta plage un espace soit en tant que donnée de celle-ci soit comme résultat de la formule en remplacement du vide ainsi :

Actuellement ma formule = vide
En remplacement
SI (ma formule = vide;espace;maformule)
Avec cette construction soit c est un espace soit c est la donnée de la formule
Ainsi le filtre pourra être mis en place dans la plage des cellules

Essaies et dis moi

Bonjour FFO,
désolé de répondre tardivement !!
donc si je comprend bien ,si ma formule est :
=SIERREUR(SI(ESTVIDE(B21);"";RECHERCHEV(B21;‹ TABLEAU 1 ›!$A$8:$B$426;2;FAUX));"")
je dois donc la réécrire de cette façon:
=SI(SIERREUR(SI(ESTVIDE(B21);"";RECHERCHEV(B21;‹ TABLEAU 1 ›!$A$8:$B$426;2;FAUX));"")="";"";SIERREUR(SI(ESTVIDE(B21);"";RECHERCHEV(B21;‹ TABLEAU 1 ›!$A$8:$B$426;2;FAUX));""))
Mais ca ne fonctionne toujours pas ,toutes mes ligne vides sont filtrées .
Franck .

« Mais ca ne fonctionne toujours pas ,toutes mes ligne vides sont filtrées . »

Mais si les lignes vides sont filtrées c est que le filtre est actif donc fonctionne
N est ce pas ce que tu souhaites ?

Desolé il y a quelque chose qui m echappe

Merci d être plus claire

C’est toujours la meme chose ,si l’on était ensemble devant l’écran ce serait limpide pour tout les deux :grinning: :grinning:
En fait ce que je souhaite c’est que le filtre ne puisse jouer son rôle que si toute les lignes ne sont pas vides ,si toute sont vides le filtre va me masquer toute les lignes et ce n’est pas ce que je souhaite .
En clair :il y a des lignes vides et d’autres pas :on masque les vides .
toutes les lignes sont vides :on ne masque pas .
Franck

Bien il suffit de jouer sur le choix du filtre pour filtrer ce que l on souhaite
Si toutes les cellules son vides pour ne rien masquer choisir dans le filtre « Sélectionner tout »
Sinon si toutes les cellules ne sont pas vides changer ce choix par l ensemble de ceux disponibles sauf les vides
Pas plus compliqué
Essaies et dis moi

Désolés de te répondre tard mais j’ai passé un week-end loin de l’informatique !!
Je regarde ça dans l’après midi ,
Merci ,
Franck.

Bonjour FFO ,
Encore une fois milles excuses de ne pas avoir repondu ;jai été happé par le travail et beaucoup d’activité dans le privé …
j’ai finalement opté pour une autre solution ,en ajoutant une macro pour defiltrer aprés impression .
J’ai tout de même une dernière question sur ce tableau.
L’idée était en fonction d’un planning de distribuer sur les onglets « Lundi,mardi,mercredi;jeudi,vendredi » les opérations a effectuer suivant le code siuvant :
Sub Traitement()

’ Traitement Macro

listejour = « /LUNDI/MARDI/MERCREDI/JEUDI/VENDREDI/ »
For h = 1 To UBound(Split(listejour, « / »)) - 1
feuille = Split(listejour, « / »)(h)
Sheets(feuille).Range(« B8:B16 ») = «  »
Next
complet = « / »
i = 2
Do While i < Range(« A » & Rows.Count).End(xlUp).Row + 1
If Range(« B » & i) = « EMBALLAGE » Then
jour = UCase(Format(Range(« A » & i), « DDDD »))
If « /LUNDI/MARDI/MERCREDI/JEUDI/VENDREDI/ » Like « /" & jour & "/ » Then
If Sheets(jour).Range(« B16 ») = «  » Then
ligne = Sheets(jour).Range(« B16 »).End(xlUp).Row + 1
Sheets(jour).Range(« B » & ligne).Value = Range(« C » & i).Value
Else
complet = complet & jour & « / »
End If
End If
End If
i = i + 1
Loop

If complet <> « / » Then
MsgBox (« attention ces onglets suivants : » & vbLf & vbLf & complet & vbLf & vbLf & « ont un espace insuffisant pour tous les articles à intégrer !!! »)
End If

Sheets(« LUNDI »).Protect Contents:=False, AllowFiltering:=True, UserInterfaceOnly:=True
ActiveSheet.Range("$A$21:$B$439").AutoFilter Field:=1, Criteria1:="<>"
Sheets(« LUNDI »).PrintOut
Sheets(« MARDI »).PrintOut
Sheets(« MERCREDI »).PrintOut
Sheets(« JEUDI »).PrintOut
Sheets(« VENDREDI »).PrintOut
Sheets(« ORDO »).Activate

End Sub
Comment faire pour y ajouter le lundi de la semaine suivante ,nommer l’onglet « Lundi+1 » ?
Merci une fois de plus de m’eclairer .
Bonne journée à toi !
Franck.