Associer Valeur à Texte liste

Bonjour à tous

Je cherche a définir une cellule selon ses coordonnées X et Y >>> Cell(X,Y)

Commençons par Y :

J'ai une liste déroulante de 7 mots : Charges, Courses, Voiture, Mobilier, Shopping, Loisirs, Epargne

Je voudrais associé ces 7 mots aux valeurs suivantes (dans l'ordre) : 5, 7, 9, 11, 13, 15, 17

Comment faire cela en VBA ? Déclaration de variable ou quelque chose comme ca ?

J'aimerais éviter de créer un tableau quelque part et faire un une association comme j'ai pu le voir expliqué ici ou la

Précision, ma liste déroulante est en A2, je voudrais donc que Y = A2 = 5 ou 7 ou 9 ou ...

Bonsoir et bienvenu sur le forum,

Traduit tout cela dans un support fichier et met-nous à disposition et dis-toi que nous sommes capables de comprendre une solution à deux paramètres et explique-nous entièrement tout dans le fichier.

Salut Raja !

Je plussoie : on peut comprendre, si toi même sait ce que tu veux, te montre capable de l'expliquer, et de le montrer dans un fichier...

Pour le moment, ta notion de coordonnées n'est pas très claire, un système de coordonnées doit pour se définir avec précision, et pourquoi vouloir sustituer un autre système aux adresses de cellules (par lesquelles il faudra bien passer pour qu'Excel s'y retrouve aussi) qui est lui-même un système de coordonnées précis ?

Associer des valeurs à d'autres, des numériques à des textuelles, soit ! Mais après ? Cette association doit se matérialiser comment ? Car si ça ne doit pas se matérialiser, pas la peine de commencer... ?

Et au fait, on a commencé par Y mais on a continué par... rien !

Cordialement

Bonjour !

Bon alors effectivement je n'ai pas été très clair ni très explicite. Je ne voulais pas donner l'ensemble du problème d'un coup car j'aime essayer par moi même, et demander de l'aide au fur et à mesure que je bloque. D'ou ma question sur un "petit" problème bien spécifique.

Mais je comprend que ca soit confusant pour vous ...

Alors puisqu'un exemple vaut mieux qu'un long discours voici le fichier Excel.

Il s'agit de remplir une feuille de compte en saisissant un mois, une année, un poste de dépense, et le montant. La macro à pour but ensuite de trouver et remplir la bonne case en se basant sur ces informations.

A noter que si les colonnes (poste de dépense) sont fixe, les dates sont potentiellement infini, et les lignes vouée à se décaler lorsque j'ajouterais une année suplémentaire dans mon relevé.

Précision importante : j'aimerais que tout se passe dans la macro VBA, je ne souhaite pas écrire dans ma feuille.

N'hésitez pas a me poser des questions si mon fichier n'est pas assez clair.

Bonjour,

Sub Débiter()
    Dim d, Dép, Db As Range
    With Worksheets("Saisie")
        d = DateValue("1 " & .Cells(3, 4) & " " & .Cells(3, 3))
        Dép = .Cells(3, 6).Value
    End With
    With Worksheets("Relevé")
        Dép = Application.Match(Dép, .Rows(2), 0) - 2
        Set Db = .Columns(2).Find(d, , xlFormulas, xlWhole).Offset(, Dép)
    End With
    Db.Value = Db.Value + Worksheets("Saisie").Cells(6, 4)
    MsgBox (Db.Address)
End Sub

Le but étant d'utiliser les coordonnées pour affecter une valeur, autant affecter la cellule recherchée à une variable objet...

Dernière ligne à supprimer (juste pour test).

Avant dernière à modifier si l'on ne cumule pas dans la cellule cible.

Cordialement

Merci,

Il faut que j'analyse tout ca pour comprendre comment cela fonctionne. Je m'attendais a quelque chose de bien plus long !

En revanche ton fichier ne marche pas chez moi, enfin au boulot qui à Excel forcé en Anglais, je pense que ca pose problème car la liste des mois reste en français du coup

S'il s'agit d'un problème lié aux dates, ce qui est assez récurrent, le meilleur moyen de la résoudre est d'utiliser DateSerial (arguments : année, mois, jour sous forme numérique) pour définir la date.

Je suis désolé mais en tant que débutant ... je n'y comprend rien du tout !

Le fichier marche très bien chez moi (Excell en Français) mais ne fonctionne pas au boulot (Excell en anglais)

Je pense que le problème vient de ma liste de mois qui n'est pas reconnu en anglais comme étant les mois de l'année.

Je voulais donc remplacer ma liste "Janvier,Février,Mars,..." par "01-Janvier,02-Février,03-Mars,..." et ainsi récupèrer uniquement le nombre dans ma date pour que le code reste "multilingue"

Sauf que ... ma fonction Val() me retourne 0 ce qui fait que la date de "datevalue" ne marche pas...

Et accessoirement j'aimerais bien une petite explication de Datevalue car avec les "" et les & je ne comprend pas comment elle se décompose ...

Bonjour,

Une proposition à tester

A+

Bonjour,

La macro modifiée par tes soins, modifiée pour la rendre fonctionnelle :

Sub Débiter()
    Dim d, Dép, Db As Range
    With Worksheets("Saisie")
        d = DateSerial(.Cells(3, 4), Val(.Cells(3, 3)), 1)
        Dép = .Cells(3, 6).Value
    End With
    With Worksheets("Relevé")
        Dép = Application.Match(Dép, .Rows(2), 0) - 2
        Set Db = .Columns(2).Find(d, , xlFormulas, xlWhole).Offset(, Dép)
    End With
    Db.Value = Db.Value + Worksheets("Saisie").Cells(6, 4)
End Sub

Commentaires :

- Une variable month n'est pas nécessaire ; en outre c'est une valeur de type Integer, donc pas la peine de lui attribuer un type Double ; enfin, Month est un mot-clé de VBA (une fonction) et l'utilisation de mots-clé est à éviter pour nommer des varaibles.

- Val("C3") : tu n'envoies pas à Val le contenu de la cellule C3 ainsi, mais le texte C3. La fonction renverra 0 car C est un lettre et non un chiffre [Val renvoie un nombre correspond à la partie numérique débutant une chaîne]. Avec le contenu de la cellule, Val renverra le numéro du mois.

- Disposant du numéro du mois, on n'utilise plus DateValue qui réclame un texte représentant une date, mais DateSerial (assortie de 3 arguments de type Integer : année, mois, jour). Ce qui devrait fonctionner de la même façon sur un Excel en anglais.

Cordialement

Excellent merci à tous ! Je touche au but !

J'ai modifié légèrement la macro de sorte que je garde un historique de mes additions successives.

Sauf que depuis le message ne s'affiche plus correctement. Pour la variable "Dép" il m'affiche un numéro au lieu du poste de dépense.

J'ai ainsi : "Débit de 77€ réalisé sur le poste de dépense 3" au lieu de "Débit de 775€ réalisé sur le poste de dépense transport"

16ok.xlsm (26.92 Ko)
Rechercher des sujets similaires à "associer valeur texte liste"