Executer deux tache excel

Résolu
nonossov Messages postés 638 Statut Membre -  
nonossov Messages postés 638 Statut Membre -
Bonjour mes amis,

J'ai besoin de votre expertise comment puis je executer deux tache excel a savoir: couper les cellule qui demarre par 0 et les coller dans la colonne "C" et les remplacer par Y. Exemple dans les colonnes suivantes:

A/B/C
0a
b
0c
d
le resultat:
A/B/C
y / /0a
b / /
y / /0c
d / /
j'ai couper coller les 0a . 0c dans la colonne C et les remplacer par y

Merci infiniment pour votre aide

Configuration: Windows / Firefox 52.0

2 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Sure que ce sont des lettres apres les "0" et la ou y a pas de "0" aussi???????????????????
    3
    1. nonossov Messages postés 638 Statut Membre
       
      Oui le mot commence par 0xxxxxxx, le "0" est au debut,

      Merci infiniment
      0
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour,

      Ok, je regarde la chose
      0
    3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Suite:


      Suite
      Une facon de faire

      Sub decoupe()
          With Worksheets("feuil1")
              derlig = .Range("A" & .Rows.Count).End(xlUp).Row        'derniere cellule non vide colonne A
              Set Plage = .Range("A1:A" & derlig)                     'mise en memoire plage de cellules
              Nb = Application.CountIf(Plage, "0*")                   'nombre de fois "0" et lettre
              If Nb > 0 Then
                  For n = 1 To derlig                                 'boucle sur la colonne
                      If nf > Nb Then Exit Sub                        'nombe de fois +1 atteint sortie
                      If Plage(n, 1) Like "0*" Then                   'test cellule
                          Plage(n, 3) = Plage(n, 1): Plage(n, 1) = "y"    'ecriture cellules
                      End If
                      nf = nf + 1                                     'increment pour test
                  Next n
              End If
          End With
          Set Plage = Nothing
      End Sub
      
      0
    4. nonossov Messages postés 638 Statut Membre
       
      bonjour, j'ai éxécuté la macro elle fonctionne bien just pour la premiere cellule A1, est ce qu'il est possible qu'elle fonctionne sur toute la colonne A?? merci
      0
    5. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour,

      derlig = .Range("A" & .Rows.Count).End(xlUp).Row  

      Ce code vous donne la ligne de la derniere cellule NON VIDE de la colonne!!!!!!!!!!!!!!!!!!!!!!
      0
  2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Est ce que vousn pouvez inserer
    Oui.

    Sub decoupe()
        Dim Plage As Range
        
        With Worksheets("feuil1")
            derlig = .Range("A" & .Rows.Count).End(xlUp).Row        'derniere cellule non vide colonne A
            Set Plage = .Range("A1:A" & derlig)                     'mise en memoire plage de cellules
            Nb = Application.CountIf(Plage, "0*")                   'nombre de fois "0" et lettre
            If Nb > 0 Then
                Memlig = 1
                Do While Application.CountIf(Plage, "0*") > 0                             'boucle sur la colonne
                    lig = .Columns(1).Find("0*", .Cells(Memlig, 1), , xlWhole).Row
                    Memlig = lig
                    Ville = .Cells(lig, 1)
                    Flg_Vide = False
                    CR = Worksheets("Les variables").Columns(1).Find(Ville).Row
                    If Worksheets("Les variables").Cells(CR, 2) = "" Then
                        Flg_Vide = True
                    Else
                        Set CR = Worksheets("Les variables").Columns(1).Find(Ville).Row
                    End If
                    Nb = Application.CountIf(Plage, Ville)
                    If Nb > 0 Then
                        For d = 1 To Nb
                            lig = .Columns(1).Find(Ville, .Cells(lig, 1), , xlWhole).Row
                            If Not Flg_Vide Then
                                .Cells(lig, 3) = .Cells(lig, 1): CR.Offset(, 1).Copy .Cells(lig, 1)
                            Else
                                .Cells(lig, 3) = .Cells(lig, 1): .Cells(lig, 1) = 401100
                            End If
                        Next d
                    End If
                Loop
            End If
        End With
        Set Plage = Nothing
        Set CR = Nothing
    End Sub
    
    0
    1. nonossov Messages postés 638 Statut Membre
       
      Je ne ss pas pourquoi je recois un message d'erreur:

      Merci d'essayer l'execution de la macro:

      https://www.cjoint.com/c/HLtjnVHkVpH
      0
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,

      Ben, je regarde

      Suite:

      petit probleme avec definition de CR, corrigé:

      Sub decoupe()
          Dim Plage As Range
          
          With Worksheets("feuil1")
              derlig = .Range("A" & .Rows.Count).End(xlUp).Row        'derniere cellule non vide colonne A
              Set Plage = .Range("A1:A" & derlig)                     'mise en memoire plage de cellules
              Nb = Application.CountIf(Plage, "0*")                   'nombre de fois "0" et lettre
              If Nb > 0 Then
                  Memlig = 1
                  Do While Application.CountIf(Plage, "0*") > 0                             'boucle sur la colonne
                      lig = .Columns(1).Find("0*", .Cells(Memlig, 1), , xlWhole).Row
                      Memlig = lig
                      Ville = .Cells(lig, 1)
                      Flg_Vide = False
                      CR = Worksheets("Les variables").Columns(1).Find(Ville).Row
                      If Worksheets("Les variables").Cells(CR, 2) = "" Then
                          Flg_Vide = True
                      End If
                      Nb = Application.CountIf(Plage, Ville)
                      If Nb > 0 Then
                          For d = 1 To Nb
                              lig = .Columns(1).Find(Ville, .Cells(lig, 1), , xlWhole).Row
                              If Not Flg_Vide Then
                                  .Cells(lig, 3) = .Cells(lig, 1):  Worksheets("Les variables").Cells(CR, 2).Copy .Cells(lig, 1)
                              Else
                                  .Cells(lig, 3) = .Cells(lig, 1): .Cells(lig, 1) = 401100
                              End If
                          Next d
                      End If
                  Loop
              End If
          End With
          Set Plage = Nothing
          Set CR = Nothing
      End Sub
      
      
      0
    3. nonossov Messages postés 638 Statut Membre
       
      je crois que tjrs le meme probleme,

      lorsque je mets un nouveau 0XXX dans la feuil "feuil1" qui ne fégure pas l'autre feuil la macro donne une erreure
      0
    4. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,

      Tout a fait Thierry, vous ne l'avez pas dit que vous pouvez avoir des 0xxx qui ne figurent pas dans Les Variables!!

      C'est a vous de definir le "cahier des charges"

      Je modifie

      Sub decoupe()
          Dim Plage As Range, CR As Range, LV As Long
          
          With Worksheets("feuil1")
              derlig = .Range("A" & .Rows.Count).End(xlUp).Row        'derniere cellule non vide colonne A
              Set Plage = .Range("A1:A" & derlig)                     'mise en memoire plage de cellules
              Nb = Application.CountIf(Plage, "0*")                   'nombre de fois "0" et lettre
              If Nb > 0 Then
                  Memlig = 1
                  Do While Application.CountIf(Plage, "0*") > 0                             'boucle sur la colonne
                      lig = .Columns(1).Find("0*", .Cells(Memlig, 1), , xlWhole).Row
                      Memlig = lig
                      Ville = .Cells(lig, 1)
                      Flg_Vide = False
                      Set CV = Worksheets("Les variables").Columns(1).Find(Ville)
                      If Not CV Is Nothing Then
                          LV = CV.Row
                          If Worksheets("Les variables").Cells(LV, 2) = "" Then Flg_Vide = True
                          Nb = Application.CountIf(Plage, Ville)
                          If Nb > 0 Then
                              For d = 1 To Nb
                                  lig = .Columns(1).Find(Ville, .Cells(lig, 1), , xlWhole).Row
                                  If Not Flg_Vide Then
                                      .Cells(lig, 3) = .Cells(lig, 1):  Worksheets("Les variables").Cells(LV, 2).Copy .Cells(lig, 1)
                                  Else
                                      .Cells(lig, 3) = .Cells(lig, 1): .Cells(lig, 1) = 401100
                                  End If
                              Next d
                          End If
                      Else
                          .Cells(lig, 2) = Ville: .Cells(lig, 1) = "NOK"
                          MsgBox "Attention: " & Ville & " n'est pas dans feuille Les Variables !!!!"
                      End If
                  Loop
              End If
          End With
          Set Plage = Nothing
          Set CR = Nothing
      End Sub
      
      0
    5. nonossov Messages postés 638 Statut Membre
       
      Merci Merci Merci, pour le travail que vous avez fait, et pour tout, Merci infiniment
      0