> 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
Publicité
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
25,49 €Carte Ziyituod AX200 PCIe WIFI 6 + Bluetooth 5.1 avec dissipateur à 25,49 €
Valable jusqu'au 27 Janvier

Amazon fait une vente flash sur la carte Ziyituod AX200 PCIe WiFi 6 + Bluetooth 5.1 avec dissipateur thermique à 25,49 €. Cette carte réseau à brancher sur un port PCI-Express de votre carte mère vous permettra d'accéder rapidement à un réseau double bande 2,4 GHz/5 GHz et de vous offrir des débits jusqu'à 2974 Mbp/s grâce à ses 2 antennes à haut gain détachables et ajustables et à sa puce Intel AX200. Elle vous permettra également d'ajouter le Bluetooth 5.0 à votre ordinateur pour connecter des périphériques sans fil (souris, clavier, enceintes, manette, ...)


> Voir l'offre
44,99 €Boîtier PC ATX Fractal Focus G à 44,99 €
Valable jusqu'au 30 Janvier

Amazon propose actuellement le très bon boîter moyen tour Fractal Design Focus G à 44,99 € livré gratuitement alors qu'on le trouve ailleurs à plus de 69 €. Le boitier Fractal Design Focus G est une plateforme ultra-polyvalente douée de fonctions ultra pratiques (format ATX, filtres, USB 3.0, 2 ventilateurs LED inclus, emplacements 5,25 pouces pour lecteur DVD/Blu-Ray, montage facile).


> Voir l'offre
26,99 €Carte mémoire microSDXC UHS-I SanDisk Ultra 200 Go à 26,99 €
Valable jusqu'au 27 Janvier

Amazon fait une promotion sur la mémoire microSDHC UHS-I SanDisk Ultra 200 Go qui passe à 26,99 € livrée gratuitement. On la trouve ailleurs à partir de 40 €. Cette carte mémoire offre des vitesses jusqu'à 90 Mo/s.


> 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