Condition

Résolu
alexysr Messages postés 25 Statut Membre -  
alexysr Messages postés 25 Statut Membre -
Bonjour,
Comment allez-vous?

J'ai un autre petit souci, je voudrais appliqué une condition, mais je ne suis pas doué ^^
Dans la colonne D à partir de la ligne1 il y a des valeurs, et je voudrais que pour toutes les valeurs commençant par "46", sur la même ligne mais dans la colonne E, on marque "SUPP".

Et deuxieme condition, dans la colonne D toujours, si des valeurs commencent par "40", supprimer la case ainsi que la case de la même ligne colonne E (uniquement c'est 2 cases , pas toute la ligne).

Merci beaucoup.

PS: EN VBA

Alexys

2 réponses

  1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonjour

    1° question
    En E1 mettre la formule : =si(gauche(D1;2)="46";"SUPP";"")

    2° question
    Pas possible par formule, il faut faire une macro en VBA

    Cdlmnt
    0
    1. alexysr Messages postés 25 Statut Membre
       
      Bonjour via55,

      Pardon j'avais pas précisé, tout ça en VBA :s
      0
    2. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      Ok, je dois m'absenter je regarde ça ce soir
      0
    3. alexysr Messages postés 25 Statut Membre
       
      Ok merci beaucoup, je sai que ça fait du boulot
      0
  2. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Voilà

    Ouvrir Editeur VBA (ALT F11) puis Insertion Module
    copier-coller la macro suivante

    Sub supp()
    Dim Ligne As Long
    dernligne = ActiveSheet.Columns(4).Find("*", , , , xlByColumns, xlPrevious).Row
    For n = 1 To dernligne
    If Left(Range("D" & n), 2) = "46" Then Range("E" & n) = "SUPP" Else If Left(Range("D" & n), 2) = "40" Then Range("D" & n) = "": Range("E" & n) = ""
    Next
    End Sub


    Fermer l'éditeur

    Acceder à la macro à partir de l'onglet Developpeur Macros ou crée un bouton et mettre dans le code le nom de la macro (supp)

    Cdlmnt
    0
    1. alexysr Messages postés 25 Statut Membre
       
      Merci beacoup via55!
      Je testerais demain et te diras :)
      Mais déjà j'ai compris le code, donc merci!

      Bonne soirée
      0
    2. alexysr Messages postés 25 Statut Membre
       
      Juste une question, peux-tu expliquer la partie :

      Dim Ligne As Long
      dernligne = ActiveSheet.Columns(4).Find("*", , , , xlByColumns, xlPrevious).Row
      For n = 1 To dernligne


      ?

      merci :)
      0
    3. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      la 2eme ligne recherche le n° dernière ligne remplie en colonne 4
      Ensuite on boucle de la 1ere à cette dernière ligne

      Bonne soirée également
      0
    4. alexysr Messages postés 25 Statut Membre
       
      Salut via55,

      J'ai essayé de l'intégrer:
      Sub Macro2()
      '
      ' Macro2 Macro
      '

      '
      Windows("data_141015.xlsx").Activate
      Worksheets("Feuil2").Activate


      Dim Ligne As Long
      dernligne = ActiveSheet.Columns(4).Find("*", , , , xlByColumns, xlPrevious).Row

      For n = 1 To dernligne
      If Left(Range("D" & n), 2) = "46*" Then Range("E" & n) = "SUPP"
      Else: If Left(Range("D" & n), 2) = "40" Then Range("D" & n) = "": Range("E" & n) = ""

      End If

      Next

      End Sub


      mais il me dit qu'il y a une erreur, une idée?

      merci
      0
    5. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      Une erreur dans ma macro et deux dans la tienne !
      Dans la mienne ce n'est pas DIm Ligne mais Dim dernligne qu'il faut mettre (j'avais changé le nom de la variable après mais pas dans le Dim !!)

      Dans la tienne il ne faut pas d'* après 46 (Left(..,2 prend les 2 premiers caractères ) et le Else doit être sur la même ligne et sans :

      Ligne correcte (en principe!) :
      If Left(Range("D" & n), 2) = "46" Then Range("E" & n) = "SUPP" Else If Left(Range("D" & n), 2) = "40" Then Range("D" & n) = "": Range("E" & n) = ""

      Et tu supprimes le End If

      Cdlmnt
      0