[Catégorie modifiée VB6 --> VBA] Cocher 1 case modifie 2 valeurs

Shenkyen Messages postés 26 Date d'inscription samedi 27 février 2010 Statut Membre Dernière intervention 15 mars 2015 - 8 août 2010 à 20:52
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 9 août 2010 à 13:28
Bonjour,

Voilà le topo : j'ai des opérations à effectuer sous Excel 2007 avec des nombres venant de listes déroulantes.

En fait les listes font la pair, imaginez les 2 colonnes (A et B) côte à côte avec des nombres différents dans chaque liste. (par exemple, 50 correspond à 55, 80 à 54, etc ... aucune règle de calcul entre les 2)

Quand je prend la valeur de A1 (50) pour le calcul, plus loin je dois prendre la valeur de B1 (55) pour un autre calcul dans la suite du premier.

Et j'aimerais savoir s'il était possible, en mettant une case à cocher à chaque "paire", de modifier simultanément 2 cases avec des valeurs, pour le coup, différentes.

Peut-être plus simple ainsi :

Colonnes A et B contiennent les listes de "paire".
Colonne C contient les cases à cocher.
D3 et D4 les cellules entrantes dans le calcul.

Si aucune case n'est cochée, rien ne se passe.

Si la case C1 est cochée, la valeur de A1 est copiée en D3, la valeur de B1 est copiée en D4.
Si la case C2 est cochée, la valeur de A2 est copiée en D3, la valeur de B2 est copiée en D4.
Si la case C3 est cochée, la valeur de A3 est copiée en D3, la valeur de B3 est copiée en D4.

J'espère avoir était assez clair :s
j'aimerai bien le faire par moi-même histoire de comprendre "de quoi ça s'agit" mais le VB je n'y connais strictement rien alors si vous aviez des tutos pour débutants, n'hésitez pas

Merci.

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
9 août 2010 à 08:18
Salut
Intéresse toi à la fonction Offset qui, après avoir sélectionné une cellule, te permet de t'adresser aux cellules voisines sans les désigner, exemple :
Dim monRange As Range
Set monRange = ActiveWorkSheet.Range("A1")
MsgBox "Contenu de la cellule à droite de A1 = " & monRange.Offset(0,1).Value

La Case, comme tu dis, c'est une Cellule.
Comment fais-tu pour "cocher une cellule" ?

Si tu sais faire un If-ElseIf-Then, tu sais tout faire !
    If Range("C1").Value = "Cochée" Then
        Range("D3").Value = Range("C1").Offset(0, -2).Value
        Range("D4").Value = Range("C1").Offset(0, -1).Value
    ElseIf Range("C2").Value = "Cochée" Then
        Range("D3").Value = Range("C2").Offset(0, -2).Value
        Range("D4").Value = Range("C2").Offset(0, -1).Value
    End If

A toi d'affiner tout ceci.
L'aide de Excel est pas mal faite, profites-en !

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Shenkyen Messages postés 26 Date d'inscription samedi 27 février 2010 Statut Membre Dernière intervention 15 mars 2015
9 août 2010 à 10:36
Merci pour la réponse

Pour la case à cocher je fais Développeur < insérer < formulaire < case à cocher. Une fois la case créée, si je la coche je peux faire varier le contenu d'une cellule de "VRAI" à "FAUX". Donc pour le code, le "Cochée" devient "VRAI" si j'ai bien suivi.

Par contre je ne comprend pas pourquoi je doit utiliser la fonction Offset. le code suivant n'est pas correcte ? (désolé pour la mise en page :s)

If Range("C1").Value = "VRAI" Then
Range("D3").Value = Range("A1").Value
Range("D4").Value = Range("B1").Value
ElseIf Range("C2").Value = "VRAI" Then
Range("D3").Value = Range("A2").Value
Range("D4").Value = Range("B2").Value
End If

Par contre je de m'apercevoir d'un petit souci, je vais avoir plusieurs cases cochées en même temps :/
C'est possible que le fait de cocher une case décoche toutes les autres ?
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
9 août 2010 à 13:28
"le "Cochée" devient "VRAI" si j'ai bien suivi"
Non, une case à cocher est ... une case à cocher : ce n'est pas la cellule qui devient cochable.
    if CheckBox1.Value = True Then

Si tu ne dois avoir qu'une seule sélection parmi une liste, il faut utiliser des "Cases d'option", pas des "Cases à cocher".

Oublie Offset.
Regarde quand même comment ça marche.
Dans mon exemple, tu ne vois pas de A1 ou B1, mais seulement C1 : Dans ton cas, si tu dois modifier C1, il faudra aussi modifier A1 et B1, pas moi.
C'est juste une astuce bien pratique.
0
Rejoignez-nous