× Aidez la recherche contre le COVID-19 avec votre ordi ! Rejoignez l'équipe PC Astuces Folding@home
 > 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 poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Les bons plans du moment PC Astuces

Tous les Bons Plans
129,07 €Disque dur externe Western Digital Elements Desktop USB 3.0 8 To à 129,07 € livré
Valable jusqu'au 27 Novembre

Amazon Allemagne propose actuellement le disque dur externe Western Digital Elements Desktop USB 3.0 8 To à 122,64 € (avec la TVA ajustée) Comptez 6,43 € pour la livraison en France soit un total de 129,07 € livré. On le trouve ailleurs à partir de 180 €. Ce disque dur dispose d'un grande capacité de stockage (8 To) et d'une connectique USB 3.0 qui vous offrira des transferts rapides. Il est compatible USB 2.0. Une très bonne affaire. 

Vous pouvez utiliser votre compte Amazon France sur Amazon Allemagne et il n'y a pas de douanes. Si vous êtes perdu en allemand, vous pouvez traduire le site en anglais.


> Voir l'offre
39,99 €Tour multiprise parasurtenseur Aukey (6 USB + 12 secteurs) à 39,99 €
Valable jusqu'au 27 Novembre

Amazon fait une promotion sur la tour multiprise parasurtenseur Aukey (6 USB + 12 secteurs) qui passe à 39,99 € livrée gratuitement. Cette multiprise en forme de tour pourra prendre place sur un bureau ou un plan de travail et vous fournir 12 prises de courant et 6 ports USB (2.4 A) pour recharger vos appareils. Câble de 2 mètres fourni. Des protections intégrées protègent vos appareils contre les courants excessifs, la surchauffe et la surcharge. Protection contre la foudre, protection contre les surtensions.


> Voir l'offre
34,99 €Kaspersky Internet Security 2021 (3 postes, 1 an) à 34,99 €
Valable jusqu'au 27 Novembre

Amazon fait actuellement une promotion sur la version 2021 de la célèbre suite de sécurité Kaspersky. Le marchand propose ainsi Kaspersky Internet Security 2021 à 34,99 € seulement. Cette version peut être installée sur 3 appareils (PC, Mac ou Android) et bénéficie de 1 an de mises à jour. Une fois votre commande passée, la clé d'activation vous est immédiatement envoyée par email, accompagnée du lien de téléchargement. Notez que si vous avez déjà un abonnement Kaspersky Internet Security, vous pourrez utiliser la clé pour prolonger votre abonnement d'un an.


> 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