XL 2016 Remplacer texte par selon 2 conditions

davidp

XLDnaute Occasionnel
Bonjour le forum ,

désolé de vous déranger à nouveau car j'ai besoin de votre aide afin de me faire gagner un temps fou sur beaucoup de données.

Mon besoin est le suivant : je cherche une macro qui analyserait la colonne F et G sur chaque ligne et si les conditions sont réunies remplacerait le texte de la même ligne de la colonne H PAR :

Les conditions sont les suivantes :

si 11 01 ( colonne F ) et DESSERT (colonne G) sur la même ligne dans ce cas replacer le texte de la colonne H par DESSERT .

si 11 01 ( colonne F ) et CLASSIQUE (colonne G) sur la même ligne dans ce cas replacer le texte de la colonne H par SALADES

si 11 01 ( colonne F ) et SALADES (colonne G) sur la même ligne dans ce cas replacer le texte de la colonne H par SALADES .

si 11 01 ( colonne F ) et SANDWICHS (colonne G) sur la même ligne dans ce cas replacer le texte de la colonne H par SANDWICH .

si 11 03 ( colonne F ) et PLATS CUISINES (colonne G) sur la même ligne dans ce cas replacer le texte de la colonne H par PLATS CHAUDS

si 11 03 ( colonne F ) et CHEFS (colonne G) sur la même ligne dans ce cas replacer le texte de la colonne H par PLATS CHAUDS

Si conditions non présentent , ne pas modifier le texte de la colonne H

Je vous remercie d'avance pour votre aide

DAVIDP
 

Pièces jointes

  • Formule remplace par selon condition.xlsx
    16.6 KB · Affichages: 24

vgendron

XLDnaute Barbatruc
Hello

un essai ici
VB:
Sub remplacer()
With Sheets("FORUM")
    fin = .UsedRange.Rows.Count
    For i = 7 To fin
        code = .Range("F" & i) & " - " & .Range("G" & i)
        Select Case code
            Case "11 01 - DESSERT"
                .Range("H" & i) = "DESSERT"
               
            Case "11 01 - CLASSIQUE"
                .Range("H" & i) = "CLASSIQUE"
               
            Case "11 01 - SALADE"
                .Range("H" & i) = "SALADE"
       
            Case "11 01 - SANDWICHS"
                .Range("H" & i) = "SANDWICHS"
           
            Case "11 03 - PLATS CUISINES"
                .Range("H" & i) = "PLATS CHAUDS"
               
            Case "11 03 - CHEFS"
                .Range("H" & i) = "PLATS CHAUDS"
        End Select
    Next i
End With
End Sub
 

Lone-wolf

XLDnaute Barbatruc
Re

En reprenant la macro de Philippe

VB:
Sub Macro1()
Dim Plage As Range, R As Range, C As Range, Cel As Range

Set Plage = Range("g7:g" & Range("f" & Rows.Count).End(xlUp).Row)

    For Each R In Plage
        Set C = R.Offset(, -1)
        Set Cel = R.Offset(, 0)

        Select Case C
        Case "11 01"
            Select Case Cel
            Case "DESSERT"
                Cel.Offset(, 1) = "DESSERT"
            Case "CLASSIQUE"
                Cel.Offset(, 1) = "SALADES"
            Case "SANDWICHS"
                Cel.Offset(, 1) = "SANDWICHS"
            Case "SALADES"
                Cel.Offset(, 1) = "SALADES"
            End Select
        Case "11 03"
            Select Case Cel
            Case "PLATS CUISINES"
                Cel.Offset(, 1) = "PLATS"
            Case "CHEFS"
                Cel.Offset(, 1) = "PLATS CHAUDS"
            End Select
        Case "17 27"
            Select Case Cel
            Case "CEREALES PETIT FORMAT"
                Cel.Offset(, 1) = "SALADES"
            End Select
        Case "17 13"
            Select Case Cel
            Case "CLUB"
                Cel.Offset(, 1) = "SANDWICHES"
            End Select

        End Select
    Next R

End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 095
Messages
2 085 253
Membres
102 837
dernier inscrit
CRETE