Executer deux tache excel

Résolu/Fermé
nonossov Messages postés 611 Date d'inscription lundi 29 décembre 2014 Statut Membre Dernière intervention 17 janvier 2020 - Modifié le 12 déc. 2018 à 12:15
nonossov Messages postés 611 Date d'inscription lundi 29 décembre 2014 Statut Membre Dernière intervention 17 janvier 2020 - 20 déc. 2018 à 16:46
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 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
12 déc. 2018 à 18:06
Bonjour,

Sure que ce sont des lettres apres les "0" et la ou y a pas de "0" aussi???????????????????
3
nonossov Messages postés 611 Date d'inscription lundi 29 décembre 2014 Statut Membre Dernière intervention 17 janvier 2020
12 déc. 2018 à 18:27
Oui le mot commence par 0xxxxxxx, le "0" est au debut,

Merci infiniment
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
13 déc. 2018 à 07:28
Bonjour,

Ok, je regarde la chose
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
13 déc. 2018 à 08:29
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 611 Date d'inscription lundi 29 décembre 2014 Statut Membre Dernière intervention 17 janvier 2020
17 déc. 2018 à 10:10
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 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié le 17 déc. 2018 à 11:26
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 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié le 19 déc. 2018 à 08:25
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 611 Date d'inscription lundi 29 décembre 2014 Statut Membre Dernière intervention 17 janvier 2020
19 déc. 2018 à 10:13
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 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié le 19 déc. 2018 à 11:27
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 611 Date d'inscription lundi 29 décembre 2014 Statut Membre Dernière intervention 17 janvier 2020
Modifié le 19 déc. 2018 à 11:54
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 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié le 19 déc. 2018 à 18:51
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 611 Date d'inscription lundi 29 décembre 2014 Statut Membre Dernière intervention 17 janvier 2020
20 déc. 2018 à 16:46
Merci Merci Merci, pour le travail que vous avez fait, et pour tout, Merci infiniment
0