> 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
269 €Smartphone Xiaomi Mi Note 10 Lite (6.47 pouces, 6 Go/128 Go) à 269 € avec le code BIENVENUE10
Valable jusqu'au 29 Janvier

RueDuCommerce propose le smartphone Xiaomi Mi Note 10 Lite à 269 € avec le code promo BIENVENUE10. Ce smartphone possède un écran 6.47 pouces Full HD+ (1080x2340 pixels), un processeur 8 coeurs Qualcom Snapdragon 730G, 128 Go d'espace de stockage. Il possède 4 capteurs photos à l'arrière (grand angle 64 MPixels, ultra grand angle 8 MPixels, Macro 2 MPixels et profondeur 5 MPixels) Un capteur d'empreinte est disponible sous l'écran, il possède le WiFi AC, le Bluetooth 5, le NFC, le GPS et un port USB C. Sa batterie haute capacité fait 5260 mAh et permet de tenir jusqu'à 2 jours sans charge. Un chargeur 30W est fourni. Le tout tourne sous Android 10.


> Voir l'offre
44,90 €Répéteur WiFi TP-Link RE455 AC1750 Dual-band à 44,90 €
Valable jusqu'au 29 Janvier

Amazon fait une promotion sur le répéteur TP-Link RE455 AC1750 Dual-band qui passe à 44,90 € et livré gratuitement. Ce répéteur qu'on trouve ailleurs à partir de 61 € va vous permettre d'augmenter grandement la portée de votre WiFi 802.11 b/g/n et ac jusqu'à 140 m² à 1750 Mbit/s. Avec son port Ethernet, ce répéteur peut également faire office de point d'accès sans fil et de pont WiFi. Compatible avec tous les box Internet et routeurs WiFi.


> Voir l'offre
294,96 €Mini PC T-BAO TBOOK MN27 (Ryzen 7 2700U, 16Go RAM, 512Go SSD NVME) à 298,48 € avec le code BGSPTB27
Valable jusqu'au 29 Janvier

Banggood propose actuellement le mini PC T-BAO TBOOK MN27 à 298,48 € (avec livraison et assurance comprises) avec le code promo BGSPTB27. Ce mini PC au format NUC d'Intel possède un processeur Ryzen 7 2700U avec chip graphique Vega 10, 16 Go de RAM DDR4 et un SSD NVME de 512 Go. Il dispose d'une connectique complète : un emplacement 2,5 pouces libre (pour ajouter un disque dur ou un SSD supplémentaire, le WiFi5, le bluetooth 4.1, 4 ports USB 3.0, 2 ports USB 2.0, un port HDMI 2.0, un DisplayPort, un port Ethernet Gigabit et tourne sous Windows 10 que vous pourrez mettre en français. Ce mini PC fait 12,8 x 12,8 x 5 cm et pèse 1,2 kg. Il est livré avec une alimentation européenne. Branchez ce mini PC sur une TV ou un écran et vous avez un ordinateur discret et performant.

Ce marchand sérieux se trouvant en Chine, la livraison peut prendre une vingtaine de jours. Vous pouvez payer par carte bancaire ou par Paypal (conseillé pour bénéficier de la garantie Paypal).


> 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