Remplir une colonne B suivant valeur de la colonne C

kenavo

XLDnaute Junior
Bonjour,

Je cherche à faire une macro qui me permettrait de remplir une colonne B suivant les valeurs de la colonne A
Je m explique dans une colonne A j'ai des noms
toto
martin
toto
Dans la colonne B je souhaite remplir automatique : si Toto alors mettre 10 a toto les ligne toto, si Martin mettre 60....
Je souhaite faire cela car c'est un fichier extrait d' une base de données mais le champ nom à affecter ne figure pas dedans
Cf piece jointe

Merci d' avance
 

Pièces jointes

  • recherche nom.xls
    22.5 KB · Affichages: 134
  • recherche nom.xls
    22.5 KB · Affichages: 141
  • recherche nom.xls
    22.5 KB · Affichages: 140

job75

XLDnaute Barbatruc
Re : Remplir une colonne B suivant valeur de la colonne C

Bonjour kenavo, salut hoerwind,

J'aime bien la formule d'hoerwind, pourquoi ne pas l'utiliser en VBA :

Code:
Sub EntrerValeurs()
Dim F As String, plage As Range
F = "=IF(RC1="""","""",CHOOSE(MATCH(RC1,{""toto"";""max"";""martin"";""titi""},0),10,11,15,60))"
Set plage = Range("A2", Range("A65536").End(xlUp))
With plage.Offset(, 1)
  .FormulaR1C1 = F
  .Value = .Value 'supprime les formules
End With
End Sub

Cette manière de faire est très rapide car pas de boucle...

A+
 

kenavo

XLDnaute Junior
Re : Remplir une colonne B suivant valeur de la colonne C

Bojour,

juste une petite chose, comment faire pour lui dire dans quelle feuille la macro soit s'executer, dans mon cas ce n'est pas la feuil1 mais une feuille nommé sheet1 ( feuille nome ainsi lors d l'extration des données ( je ne veux pasmodifier son nom))
Le code est dans un module et non dans la feuille, qd il est ds module1 je n'arrive pas à le faire marcher
Bonne fin de WE
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Remplir une colonne B suivant valeur de la colonne C

Bonsoir kenavo,

Dans un module, le code précédent fonctionne si Sheet1 est la feuille active.

On peut l'activer en début de macro par Sheets("Sheet1").Activate

Sinon, préciser la feuille ainsi :

Code:
Sub EntrerValeurs()
Dim F As String
F = "=IF(RC1="""","""",CHOOSE(MATCH(RC1,{""toto"";""max"";""martin"";""titi""},0),10,11,15,60))"
With Sheets("Sheet1").Range("B2:B" & Sheets("Sheet1").Range("A65536").End(xlUp).Row)
  .FormulaR1C1 = F
  .Value = .Value 'supprime les formules
End With
End Sub

J'en ai profité pour simplifier en n'utilisant pas la variable plage.

A+
 

job75

XLDnaute Barbatruc
Re : Remplir une colonne B suivant valeur de la colonne C

Re,

Peut-être faut-il préciser aussi le classeur :

Code:
Sub EntrerValeurs()
Dim F As String
F = "=IF(RC1="""","""",CHOOSE(MATCH(RC1,{""toto"";""max"";""martin"";""titi""},0),10,11,15,60))"
With ThisWorkbook.Sheets("Sheet1")
  With .Range("B2:B" & .Range("A65536").End(xlUp).Row)
    .FormulaR1C1 = F
    .Value = .Value 'supprime les formules
  End With
End With
End Sub

A+
 

Staple1600

XLDnaute Barbatruc
Re : Remplir une colonne B suivant valeur de la colonne C

Bonsoir


Pour le plaisir de croiser du beau linge xldien ;)

Une autre façon d'écrire
VB:
Sub a4Fun()
Dim c As Range, t
t = [{"toto","max","martin","titi"}]
For Each c In Columns(1).SpecialCells(xlCellTypeConstants, 23)
c.Offset(, 1) = Choose(Application.Match(c, t, 0), 10, 11, 15, 60)
Next
End Sub

PS: kenavo
Tu devrais modifier ton titre en:
Remplir une colonne B suivant valeur de la colonne A , non ;) ?
 
Dernière édition:

kenavo

XLDnaute Junior
Re : Remplir une colonne B suivant valeur de la colonne C

Bonjour,
Merci beaucoup!!

Ma macro est ok maintenant et marche comme je voulais : complète ma colonne et me génére un tableau croisé

Bonne journée à tous et toutes
 
Dernière édition:

kenavo

XLDnaute Junior
Re : Remplir une colonne B suivant valeur de la colonne C

Bonjour,

Je ne comprends pas pourquoi alors que je n'ai modifié que mes critères ({""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))" et maintenant j'ai une erreur sur la ligne :
.formulaR1C1

mon code :
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

Je ne comprends pas comment marche formulaR1C1...

Bon WE
 
Dernière édition:

kenavo

XLDnaute Junior
Re : Remplir une colonne B suivant valeur de la colonne C

Ok l'erreur venait des espaces et d' une lettre dans un code!!
11 650 252,07 050 252,36 000 252,53 332 252,24 152 252, 56 500 S52,79 100 252,86 100 252

Problème réglé grâce aux doubles quote : ""52S85""

Et je vais tt de même chercher une aide sur formulaR1C1....

Bon après midi à toutes et tous
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 231
Messages
2 086 440
Membres
103 210
dernier inscrit
Bay onais