Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

CHOOSE et plus de 29 cas

kenavo

XLDnaute Junior
Bonsoir,

Avec cette macro, je suis limité a 29 cas :

Code:
Sub EntrerValeurs()
Dim F As String
F = "=IF(RC3="""","""",CHOOSE(MATCH(RC3,{""BTP"";""BMCO"";""PMX"";""BPOP"";""MTTP"";""FRDF"";""FFT"";""ESF"";""""},0),11 650 252,07 050 252,36 000 252,53 332 252,24 152 252, 56 500 S52,79 100 252,86 100 252))"
With Sheets("Sheet1").Range("O2:O" & Sheets("Sheet1").Range("A65536").End(xlUp).Row)
  .FormulaR1C1 = F
  .Value = .Value 'supprime les formules
End With
End Sub

Comment faire pour ajouter d'autres conditions, j'ai testé en ajoutant une variable mais les valeurs de F sont "écrasées" :

Code:
Sub EntrerValeurs()
Dim F, G As String
F = "=IF(RC3="""","""",CHOOSE(MATCH(RC3,{""BTP"";""BMCO"";""PMX"";""BPOP"";""MTTP"";""FRDF"";""FFT"";""ESF"";""""},0),11 650 252,07 050 252,36 000 252,53 332 252,24 152 252, 56 500 S52,79 100 252,86 100 252))"
G = "=IF(RC3="""","""",CHOOSE(MATCH(RC3,{""BP"";""BCO"";""MX"";""POP"";""MTP"";""FRF"";""FOT"";""EGF"";""""},0),11 650 352,07 050 352,36 000 352,53 332 352,24 152 352, 58 500 S52,79 100 352,86 100 852))"

With Sheets("Sheet1").Range("O2:O" & Sheets("Sheet1").Range("A65536").End(xlUp).Row)
  .FormulaR1C1 = F
 .FormulaR1C1 = G
  .Value = .Value 'supprime les formules
End With
End Sub


Bonne soirée
 

Paritec

XLDnaute Barbatruc
Re : CHOOSE et plus de 29 cas

Bonjour Kenavo Victor,
et si tu nous mettais un petit fichier avec ce que tu as et de ce que tu souhaites obtenir , on pourrait t'aider et peut-être faire une macro différente qui ne te limiterait plus
a te relire avec les explications dans le fichier
a+
Papou
 

kenavo

XLDnaute Junior
Re : CHOOSE et plus de 29 cas

Bonjour,

Voici le fichier ( c'est un fichier bidon) dans ce fichier je n'ai pas autant de cas que dans le vrai
Je vais regarder du cote de select case

En colonne C j'ai une liste d'au moins 35 "noms" a chacun je veux affecter une valeur , la macro marche si j'ai moins de 29 cas ( nom)
En colonne O je veux trouver les codes

Bonne journée
 

Pièces jointes

  • recherche nom1.xls
    27.5 KB · Affichages: 57
Dernière édition:

kenavo

XLDnaute Junior
Re : CHOOSE et plus de 29 cas

Bonjour,

Est ce que je pars sur la bonne voie...
1 - je definis une liste dynamique : les données qui se trouve en colonne C ( là ou j'ai ts mes "noms") :
Range("C1:C1").Select
ActiveWorkbook.Names.Add Name:="Entite", RefersToR1C1:= _
"=OFFSET(Sheet1!R2C3,,,COUNTA(Sheet1!C3)-1)"

2- c'est à partir de là que je peux utiliser Select Case?
Select case
Case Toto
code = 5
Case Titi
code= 10....

mais je ne sais pas comment affecter le code dans le colonne G

Bonne journée
 
G

Guest

Guest
Re : CHOOSE et plus de 29 cas

Bonjour,

Avec index et equiv:

Code:
    Dim F As String, plage As Range
    F = "=INDEX({10;11;15;60},MATCH(RC3,{""Toto"";""max"";""martin"";""titi""},0))"

Mais tu aurais intérêt à mettre tes valeurs dans une plage de feuille cachée, sinon cela va vite devenir illisible.

A+

[Edition] Hello Pierrot
 
Dernière modification par un modérateur:

Pierrot93

XLDnaute Barbatruc
Re : CHOOSE et plus de 29 cas

Bonjour,

regarde si ceci peut t'aider :
Code:
Option Explicit
Sub test()
Dim t1() As Variant, t2() As Variant, c As Range
t1 = Array("toto", "titi", "tata")
t2 = Array(10, 20, 30)
For Each c In Range("C2::C20")
    If Application.Match(c, t1, 0) > 0 Then c.Offset(0, 4).Value _
        = t2(Application.Match(c, t1, 0) - 1)
Next c
End Sub
bonne journée
@+

Edition : bonjour Hasco
 

kenavo

XLDnaute Junior
Re : CHOOSE et plus de 29 cas

Merci,
non je ne peux pas mettre les valeurs dans une feuille cachées car ma macro sert à plusieurs fichiers
Je vais me souvenir qu' avec index et equiv , nous ne sommes pas limité
 

kjin

XLDnaute Barbatruc
Re : CHOOSE et plus de 29 cas

Bonjour,
Comprends pas pourquoi coder en dur les valeurs mais bon
Code:
Option Base 1
Function MYVAL(MYCEL As Range)
T1 = Array("BTP", "BMCO", "PMX", "BPOP", "MTTP", "FRDF", "FFT", "ESF", "BP", "BCO", _
            "MX", "POP", "MTP", "FRF", "FOT", "EGF")
T2 = Array("11 650 252", "07 050 252", "36 000 252", "53 332 252", "24 152 252", _
            "56 500 S52", "79 100 252", "86 100 252", "11 650 352", "07 050 352", "36 000 352", _
            "53 332 352", "24 152 352", "58 500 S52", "79 100 352", "86 100 852")
x = Application.Match(MYCEL, T1, 0)
If Not IsError(x) Then MYVAL = T2(x)
End Function

Sub d()
Dim rng As Range, c As Range
Set rng = Range("O2:O" & Range("C65000").End(xlUp).Row)
For Each c In rng
    If c.Offset(0, -12) <> "" Then c = MYVAL(c.Offset(0, -12))
Next
End Sub

Edit: Ouh, bah y a du monde...

A+
kjin
 
Dernière édition:

kenavo

XLDnaute Junior
Re : CHOOSE et plus de 29 cas

Merci,

Je regarde les propositions de Kjin et pierrot et je vous tiens au courrant

Kjin : sur mon fichier ça bloque a la ligne 29 sur
"If Not IsError(x) Then MYVAL = T2(x)"
 
Dernière édition:
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…