VBA : formule if find then else [Résolu/Fermé]

Signaler
Messages postés
5
Date d'inscription
mardi 24 mai 2011
Statut
Membre
Dernière intervention
24 mai 2011
-
Messages postés
5
Date d'inscription
mardi 24 mai 2011
Statut
Membre
Dernière intervention
24 mai 2011
-
Bonjour,

Je souhaite créer un programme VBA qui me permettrait de réaliser l'action suivante :

Si dans la cellule Bx (1,2,3,4,5,...) on trouve "D_CTY_BRENT" , alors dans la cellule Cx correspondante (1,2,3,4,...) on met "BRENT".
Sinon la cellule Cx = Bx

Si jamais vous avez une idée pour ce petit programme, n'hésitez pas à m'en faire part.

Thx,

9 réponses

Messages postés
4239
Date d'inscription
lundi 20 avril 2009
Statut
Contributeur
Dernière intervention
12 septembre 2014
1 313
Bonjour,

pas besoin de passer par une macro, simplement écrire cette formule en Cx :

=SI(Bx = "D_CTY_BRENT";"BRENT";"Bx)


en remplaçant x par le numéro de ligne.

Cordialement.
Messages postés
5
Date d'inscription
mardi 24 mai 2011
Statut
Membre
Dernière intervention
24 mai 2011

Thx, effectivement, pas besoin de programme, en fait ce qui ne marchait pas était la fonction search de ma formule
Messages postés
867
Date d'inscription
mardi 24 mai 2011
Statut
Membre
Dernière intervention
8 février 2015
213
Voici une solution en vb net (cela doit pouvoir s'adapter en vba)

'Déclaration des variables 
Dim appExcel As Excel.Application 'Application Excel 
Dim wbExcel As Excel.Workbook 'Classeur Excel 
Dim wsExcel As Excel.Worksheet 'Feuille Excel 
   
   
'Ouverture de l'application 
appExcel = CreateObject("Excel.Application") 
'Ouverture d'un fichier Excel 
wbExcel = appExcel.Workbooks.Open(openfiledialog1.FileName) 
'wsExcel correspond à la première feuille du fichier 
wsExcel = wbExcel.Worksheets(1) 

Dim j as integer 

For j=1 To 5 

If wsExcel.Cells(j,2).Value="D_CTY_BRENT" Then 

wsExcel.Cells(j,3).Value="BRENT" 

Else 

wsExcel.Cells(j,3).Value=wsExcel.Cells(j,2).Value 

End if

Next j 



Messages postés
5
Date d'inscription
mardi 24 mai 2011
Statut
Membre
Dernière intervention
24 mai 2011

En fait, j'aurais besoin d'une formule plus poussée afin de faire un search car le nom présent dans Bx n'est pas "D_CTY_BRENT" exactement mais "D_CTY_BRENT.............." .
Du coup j'aimerais faire un search pour voir si on trouve dans les cellules Bx "D_CTY_BRENT" ou ""D_CTY_COPPER" ou "D_CTY_GOLD"
Je ne sais pas trop comment arranger ma formule avec if ( search (...or...or...) ; (BRENT or COPPER or GOLD); BX)
Messages postés
4239
Date d'inscription
lundi 20 avril 2009
Statut
Contributeur
Dernière intervention
12 septembre 2014
1 313
Bonjour,

un exemple visuel avec un fichier serait plus parlant.

vous pouvez nous adresser un petit fichier d'une dizaine de ligne avec ce que vous souhaitez obtenir.

Pour nous envoyer un fichier, allez sur le site cijoint.fr et coller le lien obtenu dans un nouveau message.

Cordialement.
Messages postés
867
Date d'inscription
mardi 24 mai 2011
Statut
Membre
Dernière intervention
8 février 2015
213
dim cellule1 as range  

cellule1 = wsexcel.Range("A1:IV65500").Find("D_CTY_BRENT")  

  If not cellule1 Is Nothing Then  

wsExcel.Cells(cellule1.Row,3).Value="BRENT"

End if
Messages postés
5
Date d'inscription
mardi 24 mai 2011
Statut
Membre
Dernière intervention
24 mai 2011

http://www.cijoint.fr/cj201105/cijpMOL1dj.jpg
Messages postés
4239
Date d'inscription
lundi 20 avril 2009
Statut
Contributeur
Dernière intervention
12 septembre 2014
1 313
Essayez avec cette formule en C1(un peu compliqué mais qui devrait marcher) :

=SI(ESTERREUR(TROUVE("BRENT";B1));SI(ESTERREUR(TROUVE("COOPER";B1));SI(ESTERREUR(TROUVE("GOLD";B1));B1;"GOLD");"COOPER");"BRENT")


Puis placer le curseur en bas à droite jusqu'à ce qu'il ressemble à une petite croix, et double cliquer.
Messages postés
5
Date d'inscription
mardi 24 mai 2011
Statut
Membre
Dernière intervention
24 mai 2011

Merci pour toutes les réponses, la dernière formule a très bien marché, merci beaucoup. !!