Executer deux tache excel

Résolu
nonossov Messages postés 610 Date d'inscription   Statut Membre Dernière intervention   -  
nonossov Messages postés 610 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

2 réponses

f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Bonjour,

Sure que ce sont des lettres apres les "0" et la ou y a pas de "0" aussi???????????????????
3
nonossov Messages postés 610 Date d'inscription   Statut Membre Dernière intervention  
 
Oui le mot commence par 0xxxxxxx, le "0" est au debut,

Merci infiniment
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Bonjour,

Ok, je regarde la chose
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
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
nonossov Messages postés 610 Date d'inscription   Statut Membre Dernière intervention  
 
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
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
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
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
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
nonossov Messages postés 610 Date d'inscription   Statut Membre Dernière intervention  
 
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
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
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
nonossov Messages postés 610 Date d'inscription   Statut Membre Dernière intervention  
 
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
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
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
nonossov Messages postés 610 Date d'inscription   Statut Membre Dernière intervention  
 
Merci Merci Merci, pour le travail que vous avez fait, et pour tout, Merci infiniment
0