Bouton qui s'incrémente après avoir cliqué dessus

RomaneK

XLDnaute Nouveau
Bonjour,

Je suis face à un nouveau problème, je n'ai rien trouvé sur internet.
J'ai une liste générée dans ma feuille "Mise_en_preparation" avec une liste de matériaux qu'il aura précédemment sélectionné dans une autre feuille. L'utilisateur devra cocher des cases en face des matériaux pour les affecter à une palette (représentée par un CommandButton).
La première affectation sera à la palette 1 ou paquet 1 et une fois affectés, ils seront copiés sur un autre endroit de la feuille (avec pour entête le nom "Palette *" *=1 pour palette 1...) mais ne pourrons plus être affecter ailleurs (les lignes affectées auront éventuellement une mise en forme conditionnelle pour signaler quels matériaux ont été affectés) et ainsi de suite jusqu'à ce que toute la liste soit affectée à différents palettes/paquets.
Cependant en fonction de la liste de matériaux, on me demande de tenir compte d'un maximum de 20 palettes et 20 paquets ( pour deux sites de production: A et B), j'aurais donc 80 CmB sur ma feuille !
Est-il possible, par exemple, d'incrémenter mon CmB de 1 à 20 pour réduire mon nombre de CmB de 80 à 4 ?
Sinon je pourrais éventuellement utiliser le système d'afficher/masquer des CmB mais ma feuille excel ne risque-t-elle pas de planter avec autant d'objets ?

N'hésitez pas à me poser des questions, je vous joint mon dernier fichier

Merci à vous
 
Dernière édition:

D.D.

XLDnaute Impliqué
Hello,
Si j'ai bien compris, l'utilisateur choisi ses produits dans la liste des colonnes B:F, appui sur le bouton "Palette" et les colonnes L:T lignes xx se mettent à jour (xx étant la palette).
Par contre je n'ai pas bien compris pourquoi tu voulais multiplier les boutons.
 

RomaneK

XLDnaute Nouveau
Bonjour,
Oui le principe est de répartir les matériaux en lots ( palettes ou paquets) suivant les capacités, les quantités etc... (l'utilisateur gère lui même). Par exemple, l'utilisateur choisi 3 matériaux qu'il met dans la palette 1 en cliquant sur le bouton "palette 1" et ça colle la copie à côté sous l'entête en L:T. Et je voudrais qu'après le premier clic, étant donné que la palette 1 est faite, on passe à la palette 2 (la sélection pour palette 2 devrait être collé sous palette 1 mais ça n'a pas l'air possible avec le filtre avancé). J'espère que c'est assez claire ?
 

D.D.

XLDnaute Impliqué
Voila.
Je pense que cela devrait répondre à ton problème.
Il n'y a qu'un seul bouton, qui constitue les palettes au fur et à mesure en augmentant le N°.
Une fois un article choisi et mis sur une palette, j'ai ajouté un petit quelque chose pour que visuellement l'opérateur voit qu'il a déjà été utilisé, évitant ainsi un éventuel doublon.
Dis moi si cela te convient.
 

Pièces jointes

  • Bons de chargement et de livraison (c).xlsm
    298.4 KB · Affichages: 37

RomaneK

XLDnaute Nouveau
Bonjour et merci,
dans l'idée c'est bien ce que je veux mais jai deux trois questions:
La variable c n'est pas à déclarer ?
Je n'ai pas compris :"j'ai ajouté un petit quelque chose pour que visuellement l'opérateur voit qu'il a déjà été utilisé, évitant ainsi un éventuel doublon." car j'ai essayé de sélectionner un élément déjà copié et ça la recopié quand même.
Je pensais afficher un message box "Attention élément déjà attribué, voulez-vous continuer ?" -> "Oui / Non" (Oui : au cas où l'utilisateur s'est trompé ou a besoin d'en rajouter), je pense pouvoir me débrouiller pour ça.
Parallèlement j'ai trouvé un autre moyen de le faire que je vous joint, si vous pouvez me donner votre avis. Mais votre solution me plait mieux. Est-ce que je peux utiliser le même principe pour faire différents tableaux ? j'aurais un tableau pour les palettes "vologne", un pour les palettes "niachamps", un pour les paquets "vologne" et un pour les paquets "niachamps".
 
Dernière édition:

D.D.

XLDnaute Impliqué
Alors, pour répondre aux questions:
déclaration de c:
Bah, on pourrait la déclarer mais comme je suis un peu faignant, c'est pas souvent que je déclare les variables. Je sais que c'est pas bien, mais bon....​
déjà copié et ça la recopié quand même.
Oui, mais normalement si un article est déjà sur une palette sa case à cocher est complètement noire, contrairement aux autres qui restent vides.​
afficher un message box "Attention élément déjà attribué
Pourquoi pas. C'est un peu ce que je voulais avec la case noire: le système montre que l'article est déjà utilisé mais l'opérateur peut quand même "forcer" pour le remettre sur une autre palette.​
Parallèlement j'ai trouvé un autre moyen
Le bouton "Palette1" n'a pas de macro attribué. Je ne vois pas ailleurs "l'autre moyen".
edit: Ah, si, ca y est: Sub Palette_i_Cliquer()
Oui, ca semble bien marcher.​
Mais votre solution me plait mieux
Cool. Merci.​
Est-ce que je peux utiliser le même principe pour faire différents tableaux
Bah, oui, faut adapter un peu. Je n'ai pas mis de droit sur ces lignes de code.
Bon courage.
 

RomaneK

XLDnaute Nouveau
Rebonjour,

Effectivement, l'idée des cases noircies a plu aux futurs utilisateurs ! Tout marche nickel mais j'ai mis du temps à essayer de comprendre... Le problème que j'ai c'est que j'aimerais que lorsque je clique sur mon bouton il n'y ait pas affiché "Palette *" devant chaque ligne mais seulement devant la première ligne copié. Et j'ai beau essayer avec ta macro, de comprendre etc (utilisant les espions le débog etc) je sais pas quoi modifier ou rajouter pour le mettre. Je comprends pas où la macro trouve la valeur du numero de palette...
En espérant que tu t'en souvienne... (ps: j'ai essayé de jongler entre ma version de la macro et la tienne mais ça marche pas non plus ^^' )
 

D.D.

XLDnaute Impliqué
Hello.
Je vais avoir un peu de mal à répondre: je suis en vacances, a Mikonos Et pas d'accès à Excel...
si tu copie/colle le code vba, je te réponds. Sinon, bah peut être qu'une âme charitable du forum pourra le faire pour moi .
 

RomaneK

XLDnaute Nouveau
En vacances, j'en rêve ! :D Je te l'envoie mais c'est si vraiment tu t'embêtes, je voudrais pas gâcher tes vacances ^^
Le tien :
VB:
Sub Palette1_Cliquer()
'DD, 27.04.2017
Dim NumPal As Integer
Dim c As Range
Dim DernLgn As Integer
NumPal = Range("Mise_en_preparation!K" & Range("Mise_en_preparation!L1").End(xlDown).Row) + 1
    For Each c In Range("Gestion_CAC!i35:i86")
    DernLgn = Range("Mise_en_preparation!L1").End(xlDown).Row + 1
        If IsError(c.Value) Then GoTo JePasse
        If c = True Then
            Range("Mise_en_preparation!K" & DernLgn) = NumPal
            Range("Mise_en_preparation!L" & DernLgn) = Range("Mise_en_preparation!C" & c.Row - 32)
            Range("Mise_en_preparation!M" & DernLgn) = Range("Mise_en_preparation!D" & c.Row - 32)
            Range("Mise_en_preparation!N" & DernLgn) = Range("Mise_en_preparation!E" & c.Row - 32)
         c.Value = "#N/A"
        End If
JePasse:
    Next
End Sub

Un autre qui fait à peu près la même chose mais qui a tendance à buger:
VB:
Sub Palette_i_Cliquer()

Application.ScreenUpdating = False

    Dim i As Integer
    i = Range("H3").Value
   
    ActiveSheet.Shapes.Range(Array("Bouton " & i)).Select
    Selection.Characters.Text = "Palette " & i + 1
   
    ActiveSheet.Shapes.Range(Array("Bouton " & i)).Select
    ActiveSheet.Shapes("Bouton " & i).Name = "Bouton " & i + 1
    Selection.Name = "Bouton " & i + 1
   
   
    Range("H3").Value = i + 1
   
    Dim j As Integer
    j = Application.WorksheetFunction.CountA(Columns(12))
    Columns("AE:AN").Hidden = False
    On Error Resume Next
   
    Range("B2:F54").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("AF6:AJ7"), CopyToRange:=Sheets("temp").Range("A1:C1"), Unique:=False
   
    Dim nbr_ligne As Integer
    nbr_ligne = Application.WorksheetFunction.CountA(Worksheets("temp").Columns(1)) - 1
   
    Worksheets("temp").Range("D5") = nbr_ligne
   
    Dim k As Integer
    k = 7
   
    Range("J" & j + 2).Value = "Palette " & i
   
    Worksheets("temp").Range("A2:C" & nbr_ligne + 1).Copy Destination:=Range("L" & j + 2 & ":N" & j + 2)
  
End Sub

Bonne vacances et j'espère qu'une âme charitable tombera sur la discussion ^^
Profite bien et merci déjà pour la dernière fois ;)
 

D.D.

XLDnaute Impliqué
Bon...
Ben dans cette petite portion de code, je ne sais plus où ni comment je fais pour afficher le 'palette'.
Je pensais que j'allais trouver ca de tête, mais non :(.
Donc je sèche :).
Je retourne à la piscine....
 

Discussions similaires

Statistiques des forums

Discussions
312 109
Messages
2 085 386
Membres
102 881
dernier inscrit
Talib