> Tous les forums > Forum Bureautique
 VBA Excel valeur en fonction de cellulesSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
WINNIE0931
  Posté le 31/03/2015 @ 10:57 
Aller en bas de la page 
Petit astucien

Bonjour à tous,

Je cherche par macro à écrire dans une colonne AV un libellé en fonction des valeurs d'une cellule de la colonne N.

Mon code marche sans problème en utilisant des cell.value ="xx" or cell.value ="yy" , c'est à dire en utilisant des "or" . cela peut être fastidieux si on a beaucoup de valeurs différentes

de plus, ces valeurs ne sont pas figées ; certaines disparaissent et d'autre apparaissent, d’où la nécessité de modifier régulièrement le code.

Existe t-il un opérateur de type "dansliste" qui affecterait le dit-libellé en fonction des valeurs contenues dans une liste

J'ai bien pensé à utiliser index équiv avec une matrice mais je préférerais le faire par un autre moyen.

Voici une partie du code

For Each cell In range([N2], [N100000].End(xlUp)) '


If cell.Value = "201582" Or cell.Value = "201406" Then '


cell.Offset(, 34).Value = "toto"

Else

If cell.Value = "200126" Or cell.Value = "200203" Or cell.Value = "204203" Or cell.Value = "453001" Or cell.Value = "201550" Then


cell.Offset(, 34).Value = "tata"

Else

cell.Offset(, 34).Value = "à définir"

J'espère avoir été clair.

Un grand merci pour votre aide.

Publicité
ferrand
 Posté le 31/03/2015 à 12:37 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonjour,

Pas suffisamment clair pour apprécier le contexte...

Mais au vu des seules infos que tu fournis, j'écrirais ceci :

Dim i%, n%, v$
n = Range("N" & Rows.Count).End(xlUp).Row
For i = 2 To n
Select Case Cells(i, 14).Value
Case "201406", "201582"
v = "toto"
Case "200126", "200203", "201550", "204203", "453001"
v = "tata"
Case Else
v = "à définir"
End Select
Cells(i, 48).Value = v
Next i

gilbert_rgi
 Posté le 31/03/2015 à 14:14 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour,

hello, Ferrand

ou ça ?

http://cjoint.com/?ECFoALe7dwL



Modifié par gilbert_rgi le 31/03/2015 14:56
WINNIE0931
 Posté le 31/03/2015 à 16:08 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour Ferrand et gilbert_rgi.

Un grand merci pour ces réponses rapides ; je vais étudier les 2 méthodes qui correspondent parfaitement à mon besoin.

Je vous souhaite une bonne fin de journée.

Une fois de plus me voila dépanné grâce à vous !



Modifié par WINNIE0931 le 31/03/2015 16:09
ferrand
 Posté le 31/03/2015 à 16:13 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Gilbert

J'avais pensé dans un premier temps utiliser des tableaux, mais un seul pour les valeurs à chercher, et un autre avec au même indice les valeurs à inscrire. Mais cela m'a paru plus long à écrire, et il y avait les autres valeurs... ce qui m'a ramené à un Select Case que je pense plus efficace en pareil cas...

A suivre

Attention, ses "nombres" sont des chaînes de caractères !

WINNIE0931
 Posté le 31/03/2015 à 16:23 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Rebonjour,

Ferrand, qu'entends tu par "chaine de caractères " ?

Y a-t-il un rapport avec le format des variables ?

il se pourrait que des lettres fassent partie des codes...

A bientôt.

ferrand
 Posté le 31/03/2015 à 16:33 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonsoir,

Des chiffres affublés de guillemets ne forment pas des nombres, mais du texte.

ferrand
 Posté le 31/03/2015 à 16:41 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Et d'autre part, on ignore si nos réponses (la mienne, celle de Gilbert, celle que j'ai encore en réserve, et c'est pas limitatif) sont optimales dans la mesure où on ne connait pas le contexte. Tu dis que les valeurs à rechercher peuvent varier mais ne sachant rien sur ce point, on n'a pu en tenir compte. Or si tu as une macro que tu dois bricoler en permanence pour modifier des valeurs, ce n'est sûrement pas la bonne méthode et ce n'est pas optimal du tout !

gilbert_rgi
 Posté le 31/03/2015 à 16:58 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Merci Ferrand pour la relève

WINNIE0931 -> il serait judicieux de mettre ces numéros ou (chaines de caractères) dans une plage d'une autre feuille et que la macro les parcours



Modifié par gilbert_rgi le 31/03/2015 17:00
ferrand
 Posté le 31/03/2015 à 17:05 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

gilbert_rgi a écrit :

Merci Ferrand pour la relève

WINNIE0931 -> il serait judicieux de mettre ces numéros ou (chaines de caractères) dans une plage d'une autre feuille et que la macro les parcours

Bé ! c'est résolu !

WINNIE0931
 Posté le 31/03/2015 à 17:10 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonsoir à tous les deux.

A ce jour les éléments à considérer sont toujours composés de 6 caractères à savoir des chiffres.

Mais rien ne dit qu'à l'avenir des lettres ne puissent pas faire partie du code, d'où ma phrase précédente " il se pourrait que des lettres fassent partie des codes..".

ces éléments sont en effet une matière "vivante" et non figée.

Je suis bien entendu preneur de toute solution comme d'utiliser une base de données avec tous les codes dans une autre feuille, comme semble indiquer Gilbert.(utilisation d'une plage).

Je reste à votre disposition et un grand merci.



Modifié par WINNIE0931 le 31/03/2015 17:25
gilbert_rgi
 Posté le 31/03/2015 à 17:32 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

suite à mon principe qui n'est pas le meilleur

avec base en feuille 2

http://cjoint.com/?ECFrSNS55nU

WINNIE0931
 Posté le 31/03/2015 à 19:31 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Merci Gilbert !

C'est vraiment gentil et je vais tester tout cela avec envie et curiosité.

Bonsoir à Ferrand également !

A bientôt.

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
32,88 €Clé USB 3.1 Sandisk Ultra Luxe 256 Go à 32,88 €
Valable jusqu'au 28 Janvier

Cdiscount propose la clé USB Sandisk Ultra Luxe d'une capacité de 256 Go à 32,88 €. Cette clé USB 3.1 toute en métal est compatible USB 2.0 et offre de bons débits d'environ 150 Mo/s en lecture et en écriture. Elle inclut le logiciel SanDisk SecureAccess pour un cryptage et une protection par mot de passe de vos données sensibles. 


> Voir l'offre
39,95 €Casque audio bluetooth JBL Tune 700 BT à 39,95 €
Valable jusqu'au 29 Janvier

Auchan solde le casque audio sans fil bluetooth JBL Tune 700BT qui passe à 39,95 € alors qu'on le trouve ailleurs à partir de 49 €. Léger, moderne et connecté, le casque sans fil JBL TUNE 700BT est un formidable allié pour savourer vos morceaux préférés. Idéalement posé sur vos oreilles, il délivre un son JBL de qualité tout en se connectant sans le moindre fil à votre appareil mobile via Bluetooth. Appréciez une belle autonomie de 24 heures, un contrôle pratique depuis les commandes sur l'oreillette ainsi qu'un port confortable.


> Voir l'offre
62,49 €Nettoyeur haute pression SCHEPPACH HPW150R (150 bars, enrouleur, 2000W) à 62,49 €
Valable jusqu'au 29 Janvier

Cdiscount solde le nettoyeur haute pression SCHEPPACH HPW150R (150 bars, enrouleur, 2000W) à 62,49 € au lieu de 87,49 €. Avec une pression maximum de 150 bar, vous pourrez profiter pleinement de votre nettoyeur haute pression avec un débit de 330l/h. Vous pouvez régler le type de jet en tournant le pistolet. Garantie 5 ans + 5 ans supplémentaires gratuits si vous enregistrez le produit dans les 30 jours sur le site de Scheppach.


> Voir l'offre

Sujets relatifs
Calculer date en fonction d'une valeur dans une plage de cellules
excel colorer cellules selon valeur (4 coulerus)
passer plage cellules dans fonction excel
EXCEL: Fonction DATEDIF
Relier des choix à des cellules dans excel
EXCEL 2007 : les textes des cellules sont surlignés
[Excel 2007] Fonction NB.SI - problème
Copier-coller cellules Excel, en évitant les triangles verts
Excel: valeur sélectionnée mais non affichée sur l'axe des x
Excel 2007 Problème bizarre #valeur!
Plus de sujets relatifs à VBA Excel valeur en fonction de cellules
 > Tous les forums > Forum Bureautique