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

lien de plusieurs CheckBox vers cellule

  • Initiateur de la discussion Initiateur de la discussion titoffe60
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

titoffe60

XLDnaute Junior
Bonjour

encore besoin de vous

je voudrais que les CheckBox (entrées 1, entrées 2 ainsi de suite) sélectionnées soit en lien avec les CheckBox (L,m,m,j,v) sélectionnées, s affiche dans la feuille prévisionnel pédagogique dans "entrées" en fonction des jours sélectionnés et soit marquer à la suite

j’espère me faire comprendre

en vous remerciant par avance
a+ Christophe
 

Pièces jointes

Re : lien de plusieurs CheckBox vers cellule

Bonjour titoffe60,

Merci d'avoir expliqué.

Je ne vois pas ce que vient faire le Lundi là-dedans, alors débrouillez-vous avec ça :

1) Dans Module2 cette fonction macro :

Code:
Function Quantité#(txt$)
Dim w As Worksheet
Application.Volatile
For Each w In Worksheets
  If w.Name Like "?#*" Then _
    Quantité = Quantité + Application.SumIf(w.[C7:C39], txt, w.[E7:E39])
Next
End Function
Elle est utilisée en cellule 'Commandes ADR '!E14 (pourquoi un espace à la fin du nom de l'onglet ???).

2) Formule en cellule E1!F8 :

Code:
=RECHERCHEV(C8;'Commandes ADR '!B:N;13;0)
A vous d'adapter ces formules pour les utiliser où vous voulez.

Fichier joint.

A+
 

Pièces jointes

Dernière édition:
Re : lien de plusieurs CheckBox vers cellule

Bonjour Encore merci

Le lundi est le jour de livraison de la marchandise

j'ai ajouter 20 fiches de plus et usf qui s appelle TB (UserForm_Technique_de_base)
et le code ne prend pas en compte ses fiches et je n'arrive pas a voir ou il faut changé ses infos
désoler
Merci A+Christophe
 
Re : lien de plusieurs CheckBox vers cellule

Bonjour titoffe60, le forum,

1) J'ai ajouté un argument supplémentaire plage à la fonction Quantité :

Code:
Function Quantité#(txt$, plage As Range)
Dim w As Worksheet
Application.Volatile
For Each w In Worksheets
  If IsNumeric(Application.Match(w.[C2], plage, 0)) Then _
    Quantité = Quantité + Application.SumIf(w.[C7:C39], txt, w.[E7:E39])
Next
End Function
Pour le Lundi, plage c'est 'Prévisionnel pédagogique'!C6:C35.

Un seul test suffit, de ce fait, pour toutes les feuilles.

Voir la cellule 'Commandes ADR '!E14 du fichier (2) joint.

2) Vous parlez d'un USF nommé TB. Il n'existe pas dans le fichier, pas plus que les feuilles correspondantes.

A vous de les créer (nommez les feuilles T1 T2 T3 etc...).

A+
 

Pièces jointes

Re : lien de plusieurs CheckBox vers cellule

Re,

Ah oui je comprends que Lundi c'est pour Lundi et Mardi, Mercredi pour tous les autres jours.

Alors utiliser :

Code:
Function Quantité#(txt$, plage As Range)
Dim w As Worksheet
Application.Volatile
For Each w In Worksheets
  If txt <> "" Then If Not plage.Find(w.[C2], , xlValues, xlWhole) Is Nothing _
    Then Quantité = Quantité + Application.SumIf(w.[C7:C39], txt, w.[E7:E39])
Next
End Function
Et en 'Commandes ADR '!B14 :

Code:
=Quantité(B14;'Prévisionnel pédagogique'!C$6:G$35)
En 'Commandes ADR '!I14 :

Code:
=Quantité(B14;'Prévisionnel pédagogique'!I$6:P$35)
Edit : il faut un test en plus => If txt <> "" Then

A+
 

Pièces jointes

Dernière édition:
Re : lien de plusieurs CheckBox vers cellule

Re,

La fonction du fichier (3 bis) est évidemment plus logique :

Code:
Function Quantité#(txt$, plage As Range)
Dim w As Worksheet
Application.Volatile
If txt = "" Then Exit Function
For Each w In Worksheets
  If Not plage.Find(w.[C2], , xlValues, xlWhole) Is Nothing Then _
    Quantité = Quantité + Application.SumIf(w.[C7:C39], txt, w.[E7:E39])
Next
End Function
Noter en passant que si 'Commandes ADR '!B14 était en colonne C il faudrait la modifier.

Car il y aurait alors référence circulaire.

A+
 

Pièces jointes

Re : lien de plusieurs CheckBox vers cellule

Bonjour

merci, de tout cela mais j'ai fais un essai sur toutes les cellules de la feuille de commande et feuilles fiches techniques
cela ralenti enormement le programme, c'est bete mais sinon j'utiliserais les formules d'excel basiques (+)

a+ et encore merci
 
Re : lien de plusieurs CheckBox vers cellule

Bonjour titoffe60, le forum,

En effet s'il y a beaucoup de cellules contenant la fonction le calcul est long.

D'autant que la fonction est volatile, elle se recalcule à chaque modification du classeur.

Alors voici une solution utilisant les événements Change et Activate de la feuille Commandes ADR :

Code:
Private Sub Worksheet_Activate()
Quantité
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Quantité Target
End Sub

Sub Quantité(Optional Target As Range)
Dim plage As Range, cel1 As Range, cel2 As Range
Dim t$, Qte1#, Qte2#, w As Worksheet, v#
Set plage = Intersect([B14:B65536], Me.UsedRange)
If plage Is Nothing Then Exit Sub
If Target Is Nothing Then 'si activation de la feuille
  Application.ScreenUpdating = False
  Set Target = plage
End If
Set Target = Intersect(Target, plage)
If Target Is Nothing Then Exit Sub
For Each Target In Target
  Set cel1 = Cells(Target.Row, "E"): Set cel2 = Cells(Target.Row, "I")
  If IsEmpty(Target) Then 'RAZ
    If Not IsEmpty(cel1) Then cel1 = ""
    If Not IsEmpty(cel2) Then cel2 = ""
  Else
    t = Target: Qte1 = 0: Qte2 = 0
    For Each w In Worksheets 'adapter éventuellement les plages
      v = Application.SumIf(w.[C7:C39], t, w.[E7:E39])
      If Not Feuil1.[C6:G35].Find(w.[C2], , xlValues, xlWhole) Is Nothing _
        Then Qte1 = Qte1 + v
      If Not Feuil1.[I6:P35].Find(w.[C2]) Is Nothing Then Qte2 = Qte2 + v
    Next
    cel1 = Qte1: cel2 = Qte2
  End If
Next
End Sub
Fichier (4).

A+
 

Pièces jointes

Re : lien de plusieurs CheckBox vers cellule

Re,

Une toute petite amélioration qui évite la mise à jour de la feuille s'il n'y a eu aucune modification.

Les variables Public MAJ et flag sont pilotées dans la feuille par :

Code:
Private Sub Worksheet_Activate()
If Not MAJ Then MAJ = True: flag = True: Quantité: flag = False
End Sub
et dans ThisWorkbook par :

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
If Not flag Then MAJ = False
End Sub
Fichier (4 bis).

A+
 

Pièces jointes

Re : lien de plusieurs CheckBox vers cellule

Bonjout titoffe60, le forum,

Il arrive que le UsedRange soit encombré de lignes inutiles.

On peut le vérifier avec touche F5 => Cellules => Dernière cellule.

Sur les fichiers (3) et (3 bis) on trouve ainsi la cellule AS1421...

Pour l'éviter remplacer :

Code:
Set plage = Intersect([B14:B65536], Me.UsedRange)
par :

Code:
derlig = Application.Max([B65536].End(xlUp).Row, [E65536].End(xlUp).Row, [I65536].End(xlUp).Row)
Fichier (5).

A+
 

Pièces jointes

Re : lien de plusieurs CheckBox vers cellule

Re,

Voilà qui devrait réduire nettement la durée d'exécution.

La validité des feuilles est étudiée au début, une fois pour toutes :

Code:
Sub Quantité(Optional Target As Range)
Dim derlig&, tablo() As Boolean, ub%, i%, cel1 As Range, cel2 As Range
Dim t$, Qte1#, Qte2#, v#
derlig = Application.Max([B65536].End(xlUp).Row, [E65536].End(xlUp).Row, [I65536].End(xlUp).Row)
If derlig < 14 Then Exit Sub
If Target Is Nothing Then 'si activation de la feuille
  Application.ScreenUpdating = False
  Set Target = Range("B14:B" & derlig)
End If
Set Target = Intersect(Target, Range("B14:B" & derlig))
If Target Is Nothing Then Exit Sub
'---validation des feuilles (adapter éventuellement les plages)---
ReDim tablo(1 To Worksheets.Count, 1 To 2)
ub = UBound(tablo)
For i = 1 To ub
  If Worksheets(i).[C2].Text <> "" Then
    If Not Feuil1.[C6:G35].Find(Worksheets(i).[C2].Text, , xlValues, xlWhole) _
      Is Nothing Then tablo(i, 1) = True
    If Not Feuil1.[I6:P35].Find(Worksheets(i).[C2].Text) _
      Is Nothing Then tablo(i, 2) = True
  End If
Next
'---analyse de la feuille---
For Each Target In Target
  Set cel1 = Cells(Target.Row, "E"): Set cel2 = Cells(Target.Row, "I")
  If IsEmpty(Target) Then 'RAZ
    If Not IsEmpty(cel1) Then cel1 = ""
    If Not IsEmpty(cel2) Then cel2 = ""
  Else
    t = Target: Qte1 = 0: Qte2 = 0
    For i = 1 To ub
      If tablo(i, 1) Or tablo(i, 2) Then
        v = Application.SumIf(Worksheets(i).[C7:C39], t, Worksheets(i).[E7:E39])
        If tablo(i, 1) Then Qte1 = Qte1 + v
        If tablo(i, 2) Then Qte2 = Qte2 + v
      End If
    Next
    cel1 = Qte1: cel2 = Qte2
  End If
Next
End Sub
Fichier (6).

A+
 

Pièces jointes

Dernière édition:
Re : lien de plusieurs CheckBox vers cellule

Bonjour

Voila encore du boulot

Feuille prévisionnel
Il faudrait que sur le même jour je puisse mettre une quantité différente
exemple le lundi je clique sur entrée 1.2 et 3, 12 portions
et il me faut entrée 5 et 6, 28 portions
Le problème c'est qu il m’efface les 2 premières lignes

Au niveau de la commande cela va car les portions sont rentré sur les fiches techniques c'est juste au niveau de la mise en page.


Un autre point pourriez vous ajouter les fiches techniques "TB" a la commande
et ne peut t on pas determiner la derniere cellule ? que derligne

J ai rajouter un bouton pour envoyer par mail mais il fraudais que les macro ne s importe pas dans le fichier copier, est ce possible?

En vous remerciant par avance comme d habitude
Christophe
 

Pièces jointes

Re : lien de plusieurs CheckBox vers cellule

Bonjour,


Désolé, je ne comprends rien du tout.

Trois remarques :

- vous êtes souvent lapidaire dans vos explications car vous ne prenez pas le temps de les rédiger correctement

- quand on se décarcasse pour accélérer vos macros on aimerait en connaître le résultat : mon post #41 est resté sans commentaires de votre part

- les codes relatifs à l'envoi d'emails c'est la barbe, je ne m'en occuperai donc pas.

A+
 
Re : lien de plusieurs CheckBox vers cellule

désolé mais je suis souvent lapidaire aussi car le langage vba je l ai découvert mis juin 2012
c'est la première fois que je voyais ce logiciel et j ai énormément travaillé pour le comprendre aussi grâce à vous.
Mais aussi en passant énormément de temps pour le comprendre et j’apprends encore.
Et c'est aussi vraiment la première fois que je m'inscrit sur un forum et je n’ai vraiment pas vu votre post 41 (je sais même pas ou il faut aller) et je vais vous le faire juste après
Car votre travail et le mien (car le fichier sur le forum est un petit bout de ce qu il est vraiment) ont permis de le présenter à un grand directeur national de gestion financière et j'ai eu ses bravo et félicitations. Et cela a déclencher d autre fonctions.

Donc je m'excuse d être bref dans mes explications car je n’ai vraiment pas le temps en journée et que je connais et exploite ce logiciel depuis 2 mois en tout.
et je sais que vous vous êtes décarcasser même je parlais de vous a mon amie car j 'était vraiment étonné du temps de travail que vous faisiez et les heures d envoi des messages.
Vous remercie encore, j ose que je faisais très souvent quand même ( chose qui est normal)
Cordialement
 
Re : lien de plusieurs CheckBox vers cellule

je vous reformule

exemple: quand je me sers de "l'userforme entrées" je clique sur Lundi pour l'entrée 1 à 3 avec 12 portions , je valide.
après je regarde dans ma feuille prévisionnel (feuil1) et il m 'affiche bien mes 3 entrées sur lundi avec 12 portions.

après je décoche mes 3 entrées, sans remettre à zéro, et je clique sur lundi pour l'entrée 4 à 5 et la avec 28 portions, je valide.
Je regarde sur ma feuille prévisionnel et il m 'as remplacé l'entrée 1 à 2 avec les 12 portions

j 'ai cliqué sur 5 entrées avec des proportions différentes le même jour et j'en ais que 3 d'affichées

comme je peut mettre 6 entrées pour chaque jour de la semaine, autant m'en servir mais avec des proportions différentes

Espère avoir été assez explicite et m'en excuse d’être lapidaire et encore bravo pour votre travail

Cordialement
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

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