VBA : formule if find then else

Résolu
Equitysentinel Messages postés 5 Statut Membre -  
Equitysentinel Messages postés 5 Statut Membre -
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

  1. chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   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.
    0
  2. Equitysentinel Messages postés 5 Statut Membre
     
    Thx, effectivement, pas besoin de programme, en fait ce qui ne marchait pas était la fonction search de ma formule
    0
  3. Christof422 Messages postés 990 Statut Membre 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 
    
    
    
    
    0
  4. Equitysentinel Messages postés 5 Statut Membre
     
    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)
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   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.
    0
  7. Christof422 Messages postés 990 Statut Membre 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
    0
  8. Equitysentinel Messages postés 5 Statut Membre
     
    http://www.cijoint.fr/cj201105/cijpMOL1dj.jpg
    0
  9. chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   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.
    0
  10. Equitysentinel Messages postés 5 Statut Membre
     
    Merci pour toutes les réponses, la dernière formule a très bien marché, merci beaucoup. !!
    0