Augmenter valeurs de cellules
bonjour, ou même bonsoir !
je vous écris pour avoir un petit peu d'aide à propos d'une fonctionnalité que je voudrais mettre dans une feuille. Je vais tenter d'être le plus explicite possible ! Dans une cellule, j'ai un nombre. Il ne peut pas être plus petit que 150. J'ai inséré un bouton "toupie" depuis l'onglet développeur (version 2007) pour augmenter ce nombre de 50 en 50 (format du bouton, puis changement de pas). Là où ça se corse, c'est que j'aimerais que le pas change automatiquement une fois certaines valeurs atteintes. Concrètement, je voudrais qu'une fois la valeur de 1..000 est atteinte, le changement de pas soit de 100, et qu'à partir de 10.000, il soit de 250. C'est là que j'ai besoin de vos lumières ! Déjà pour me dire si ce que je souhaite est faisable, et si oui, me dire comment faire. J'avoue n'avoir aucune notion de VBA donc si vous me parlez de formules, je risque de ne rien comprendre !
Voilà, j'attends vos réponses. Merci d'avance !
Bonjour,
Ton bouton toupie doit être un contrôle ActiveX ("Inserer" -> "Controles ActiveX"), en mode création, tu double clique sur le bouton, ceci t'amène dans le VBE là, tu colle le code :
With SpinButton1
'adapter l'adresse de la cellule
If Range("A1") >= 1000 Then .SmallChange = 100
If Range("A1") >= 10000 Then .SmallChange = 250
If Range("A1") < 1000 Then .SmallChange = 50
End Withentre les deux lignes :
Private Sub SpinButton1_Change()
End SubDans la boite des propriétés (en bas à gauche) à la propriété "LinkedCell" tu défini la cellule que tu souhaite lier à ton bouton, dans mon exemple c'est A1, à la propriété "Min" tu mets 150 (valeur mini que tu souhaite), à la propriété "SmallChange" tu mets 50 (pas mini que tu souhaite) et dans la propriété "Max" c'est toi qui vois. Une fois ceci fait, tu clique sur le bouton "Mode création" (équerre, crayon et règle) puis tu teste.
Hervé.
salut
whaou c'est exactement ce que je recherche, merci ! Un dernier petit truc : cette fonction, j'aimerais l'appliquer à plusieurs cellules de la même feuille, mais sans avoir à créer autant de boutons et formules qu'il y a de cellules concernées. Ce que j'aimerais, c'est que quand je sélectionne une cellule, cliquer sur le bouton modifie cette cellule. Et sélectionner une autre cellule, permet de modifier cette cellule, toujours avec le même bouton. C'est pour éviter la multiplication de boutons, et la surcharge d'objets sur la feuille. J'ai recherché sur google, j'ai trouvé un truc avec activecell, mais je sais pas trop quoi en faire. Merci d'avance !
quelqu'un, siou plait ?
Re,
Remplace tout le code précédent par celui-ci. Je pense qu'il va falloir faire quelques améliorations mais je n'ai plus le temps maintenant :
Private Sub SpinButton1_Change()
With SpinButton1
'défini le pas en fonction de la valeur de la cellule
If ActiveCell >= 1000 Then .SmallChange = 100
If ActiveCell >= 10000 Then .SmallChange = 250
If ActiveCell < 1000 Then .SmallChange = 50
End With
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With SpinButton1
'si pas de valeur dans la cellule, pas de cellule liée et fin
If Target.Value = "" Then
.LinkedCell = ""
Exit Sub
End If
If Not IsNumeric(Target.Value) Then
.LinkedCell = ""
Exit Sub
End If
'défini la cellule devant recevoir la valeur
.LinkedCell = Target.Address(0, 0)
If Target.Value < .Min Then .Value = .Min Else .Value = Target.Value
End With
End SubHervé.
Theze a écrit :Re,
Remplace tout le code précédent par celui-ci. Je pense qu'il va falloir faire quelques améliorations mais je n'ai plus le temps maintenant :
Private Sub SpinButton1_Change() With SpinButton1 'défini le pas en fonction de la valeur de la cellule If ActiveCell >= 1000 Then .SmallChange = 100 If ActiveCell >= 10000 Then .SmallChange = 250 If ActiveCell < 1000 Then .SmallChange = 50 End With End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) With SpinButton1 'si pas de valeur dans la cellule, pas de cellule liée et fin If Target.Value = "" Then .LinkedCell = "" Exit Sub End If If Not IsNumeric(Target.Value) Then .LinkedCell = "" Exit Sub End If 'défini la cellule devant recevoir la valeur .LinkedCell = Target.Address(0, 0) If Target.Value < .Min Then .Value = .Min Else .Value = Target.Value End With End SubHervé.
merci de ton aide, mais ça ne marche pas. Quand je clique sur le nouveau bouton avec ce nouveau code, rien ne se passe, même la cellule sélectionnée se désélectionne...