IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Pouvoir copier les caracteres situé avant le "/" de la colonne "E" et les collés à la fin de la cellule "D". [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    alaindubois
    Inscrit en
    Février 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : alaindubois

    Informations forums :
    Inscription : Février 2015
    Messages : 38
    Points : 12
    Points
    12
    Par défaut Pouvoir copier les caracteres situé avant le "/" de la colonne "E" et les collés à la fin de la cellule "D".
    Bonjour,

    je souhaiterais pouvoir copier les caracteres situé avant le "/" de la colonne "E" et les collés à la fin de la cellule "D" et ceci pour toutes les lignes du fichier qui peut être tès long et de facon automatique.

    Par exemple pour la ligne 2 la cellule "Spot LED Downlight COB Orientable Rond 3W Argenté" deviendrait "Spot LED Downlight COB Orientable Rond 3W Argenté - 3419"

    Cela se fera toujours dans les colonnes "D" et "E". Par contre le nombre de lignes peut varier.

    J'ai éssayé de le réaliser sans succes !!

    Pouvez-vous s'il vous plaît me venir en aide ?
    Merci par avance.

    Bonne soirée.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Pour connaitre la position d'un caractère dans une chaine, fonction InStr().
    https://docs.microsoft.com/fr-fr/off...instr-function

    Pour récupérer une portion de chaine en début, fonction Left().
    https://docs.microsoft.com/fr-fr/off.../left-function

    Pour ajouter une chaine à une autre, opérateur &.
    https://docs.microsoft.com/fr-fr/off...rsand-operator

    Pour faire une boucle : http://silkyroad.developpez.com/vba/boucles/
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Membre à l'essai
    Homme Profil pro
    alaindubois
    Inscrit en
    Février 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : alaindubois

    Informations forums :
    Inscription : Février 2015
    Messages : 38
    Points : 12
    Points
    12
    Par défaut
    Bonsoir Menhir

    Merci pour ton aide mais je dois reconnaitre que je ne suis pas doué et tes liens ne me sont pas d'un tres grand secours

    Je vais poursuivre mes recherches.

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Salut Menhir
    Je tiens à te féliciter pour ta réponse, qui a à mes yeux l'énorme mérite de tendre à mettre sur le chemin du développement. Je n'aurais pas fais mieux.
    Amitiés
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  5. #5
    Membre à l'essai
    Homme Profil pro
    alaindubois
    Inscrit en
    Février 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : alaindubois

    Informations forums :
    Inscription : Février 2015
    Messages : 38
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par unparia Voir le message
    Salut Menhir
    Je tiens à te féliciter pour ta réponse, qui a à mes yeux l'énorme mérite de tendre à mettre sur le chemin du développement. Je n'aurais pas fais mieux.
    Amitiés
    Bonsoir unparia,

    N'avez vous jamais pensé que nous n'avons pas forcément la vocation à devenir développeur, ni les capacité intellectuelle ou bien tout simplement le temps....
    Un forum n'est il pas là pour aider les débutants ?

    J'ai passé beaucoup de temps a essayé de comprendre mais n'y arrive pas .... je n'ai pas la chance d'être un spécialiste comme vous..
    Bonne soirée.

  6. #6
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour phil6969
    Le mot "débutant" a un sens très précis
    Je peux parfaitement comprendre que l'on n'ait "pas forcément une vocation", ni "la capacité intellectuelle" ou "bien tout simplement le temps...."
    Tel est par exemple mon cas en ce qui concerne des soudures à l'arc dont j'ai actuellement besoin. J'ai donc loué les services d'un soudeur
    Tout étant pour le mieux dans le meilleur des mondes, je ne doute pas qu'il louera un jour, lui, ceux d'un développeur.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  7. #7
    Membre habitué
    Homme Profil pro
    Comptable
    Inscrit en
    Novembre 2018
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Novembre 2018
    Messages : 100
    Points : 158
    Points
    158
    Par défaut
    Bonsoir,

    Si tu n'es pas à l'aise avec VBA, les fonctions excel font très bien le taf.

    Exemple pour la ligne 2 de ton tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =D2&" - "&GAUCHE(E2;TROUVE("/";E2)-2)
    Il reste plus cas copier la formule sur la longueur de ton tableau et copier les valeurs de sorties en fonction de tes besoins.

    A+

  8. #8
    Membre à l'essai
    Homme Profil pro
    alaindubois
    Inscrit en
    Février 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : alaindubois

    Informations forums :
    Inscription : Février 2015
    Messages : 38
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par unparia Voir le message
    Bonjour phil6969
    Le mot "débutant" a un sens très précis
    Je peux parfaitement comprendre que l'on n'ait "pas forcément une vocation", ni "la capacité intellectuelle" ou "bien tout simplement le temps...."
    Tel est par exemple mon cas en ce qui concerne des soudures à l'arc dont j'ai actuellement besoin. J'ai donc loué les services d'un soudeur
    Tout étant pour le mieux dans le meilleur des mondes, je ne doute pas qu'il louera un jour, lui, ceux d'un développeur.
    Bonjour unparia,

    Je suis venu chercher de l'aide sur ce forum et pas parler soudure . Je n'ai pas envie de rentrer dans un discours stérile avec quiconque. Vous n'avez pas envie de m'aider ... je respect, d'autre part je ne vous ai pas solliciter personnellement...

    je vous demanderais donc de ne pas venir pollué ce post. Merci.

    Bien à vous.

  9. #9
    Membre à l'essai
    Homme Profil pro
    alaindubois
    Inscrit en
    Février 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : alaindubois

    Informations forums :
    Inscription : Février 2015
    Messages : 38
    Points : 12
    Points
    12
    Par défaut
    Bonjour John Mc Evee,

    Je te remercie pour ton aide.

    Citation Envoyé par John Mc Evee Voir le message
    Bonsoir,

    Si tu n'es pas à l'aise avec VBA, les fonctions excel font très bien le taf.

    A+
    Oui tu as tout compris je ne suis pas à l'aise..
    Ta formule est super cela fonctionne parfaitement. J'ai essayé de l'incorporer dans une macro (code ci-dessous) j'ai utiliser l'enrgistreur de macro.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Sub Macro1()
    '
    ' Macro1 Macro
    '
     
    '
        Columns("E:E").Select
        Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
        Range("E2").Select
        ActiveCell.FormulaR1C1 = "=RC[-1]&"" - ""&LEFT(RC[1],FIND(""/"",RC[1])-2)"
        Selection.AutoFill Destination:=Range("E2:E62"), Type:=xlFillDefault
        Range("E2:E62").Select
        ActiveWindow.SmallScroll Down:=-75
        Columns("E:E").Select
        Selection.Copy
        Columns("D:D").Select
        Range("E2:E62").Select
        Application.CutCopyMode = False
        Selection.Copy
        ActiveWindow.SmallScroll Down:=-84
        Range("D2:D62").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        ActiveWindow.SmallScroll Down:=-72
        Columns("E:E").Select
        Application.CutCopyMode = False
        Selection.Delete Shift:=xlToLeft
        Range("D4").Select
    End Sub
    Cela fonctionne très bien ... Sauf que:

    Dans mon test mon fichier fait 62 lignes environ... mais si un autre fichier fait plus de ligne alors seul les 62 premières lignes seront prisent en compte.
    Je n'arrive pas à faire que toutes les lignes soit modifiées

  10. #10
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par phil6969 Voir le message
    N'avez vous jamais pensé que nous n'avons pas forcément [...] tout simplement le temps....
    Personnellement, moi non plus je n'ai pas le temps de faire ton travail à ta place.

    Un forum n'est il pas là pour aider les débutants ?
    Ce forum a une vocation pédagogique. Il permet de progresser dans la maitrise d'outils de développement. Ce n'est pas pour rien qu'il s'intitule "développeZ" à la seconde personne du pluriel.
    Il n'est pas là pour fournir une main d'oeuvre gratuite à ceux qui n'ont pas la volonté de réaliser leur travail par eux-mêmes ni les moyens de le faire faire par d'autres.

    Selon le dictionnaire, "débuter" c'est "faire les premières démarches".
    Si tu ne souhaites pas t'engager sur les premières démarches que je t'ai proposées, c'est que tu souhaites qu'on le fasse à ta place, comme le confirme ce message où tu dis toi-même ne pas avoir que tu n'as pas la "vocation à faire du développement".
    Autrement dit, tu ne manifestes aucune volonté à vouloir "débuter".

    Personnellement, je ne suis pas ici pour faire le travail des autres à leur place et j'ai beaucoup de réticences à aider ceux qui ne veulent pas participer activement à la résolution de leur propre problème.

    J'ai passé beaucoup de temps a essayé de comprendre mais n'y arrive pas
    2 h entre mon message et ta réponse de renoncement.
    Ca me semble très court pour prétendre à avoir passé "beaucoup de temps" à essayer de comprendre ces information et tenter de réaliser un développement.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  11. #11
    Membre à l'essai
    Homme Profil pro
    alaindubois
    Inscrit en
    Février 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : alaindubois

    Informations forums :
    Inscription : Février 2015
    Messages : 38
    Points : 12
    Points
    12
    Par défaut
    Bonjour Menhir,

    Je n'ai jamais demandé a ce que l'on réalise mon travail, je demande juste de l'aide.
    Pour preuve John Mc Evee m'a aidé en me donnant une piste à explorer que j'ai mis en application et suis arrivé à un semblant morceau de code.....

    Mais finalement je ne comprends pas cette agressivité... je ne demande que de l'aide.... je n'oblige personne à me répondre....

  12. #12
    Membre habitué
    Homme Profil pro
    Comptable
    Inscrit en
    Novembre 2018
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Novembre 2018
    Messages : 100
    Points : 158
    Points
    158
    Par défaut
    Bonjour Phil6969,

    Avant de te donner la réponse toute faite, je vais faire preuve de pédagogie.

    Premièrement il faut retravailler le code de l'enregistreur (qui est un bonne outil pour débuter), il n'y a pas de secret il faut comprendre ce que l'enregistreur a écrit.
    Voici ton code avec des explications. Je te propose dans ce premier temps, de conserver les lignes de code qui te sont réellement utile.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    Sub Macro1()
    '
    ' Macro1 Macro
    '
    '
    '*********************************************************************************
    ' L'enregistreur de macro permet a des personnes souhaitant se perfectionner
    ' en automatisation de classeur Excel d'avoir accès à du code VBA.
    ' Cependant l'enregistreur prend mille précaution et écrit beaucoup trop !!!
    ' La première étape est de faire du pas à pas avec la macro (Touche F8) et
    ' de retirer les lignes qui ne te servent pas.
    '*********************************************************************************
     
        Columns("E:E").Select   'Selection de la colonne E
     
        'Insertion du colonne en décalant par la droite
        Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
     
        'Selection de cellule E2
        Range("E2").Select
        'Ecriture de la fonction Excel dans la cellule selectionner
        ActiveCell.FormulaR1C1 = "=RC[-1]&"" - ""&LEFT(RC[1],FIND(""/"",RC[1])-2)"
     
        'Dupication de la fonction de la cellule E2 à E62
        Selection.AutoFill Destination:=Range("E2:E62"), Type:=xlFillDefault
     
        'Selection de la plage E2:E62
        Range("E2:E62").Select
        'Un petit coup de roller de souris :) (Inutile)
        ActiveWindow.SmallScroll Down:=-75
     
        'Tentative de copie de la colonne E vers la colonne D
        Columns("E:E").Select
        Selection.Copy                  '(Les 3 lignes Inutile)
        Columns("D:D").Select
        'Hésitation du collage (Habituté du Ctrl V ?)
     
     
        'Reselection de la plage E2:E62 (inutile)
        Range("E2:E62").Select
     
        'Désactivation de la fonction coupage (Ctrl X) (Inutile)
        Application.CutCopyMode = False
     
        'Copie des données de E2:E62
        Selection.Copy
     
        'Un petit coup de roller de souris :) (Inutile)
        ActiveWindow.SmallScroll Down:=-84
     
        'Selection de la plage de destination
        Range("D2:D62").Select
     
        'Collage des valeurs (Symbole 123)
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
     
        'Un petit coup de roller de souris :) (Inutile)
        ActiveWindow.SmallScroll Down:=-72
     
        'Selection de la colonne E
        Columns("E:E").Select
     
        'Désactivation de la fonction coupage (Ctrl X) (Inutile)
        Application.CutCopyMode = False
     
        'Suppression de la colonne E
        Selection.Delete Shift:=xlToLeft
     
        'Selection de la cellule D2 (Inutile)
        Range("D4").Select
    End Sub
    Dans un second temps je t'apprendrais à rendre dynamique cette macro pour que tu puisse l'exporter vers d'autre classeur.

    Si cela te va merci de reposter un code un peu plus épurer

    A+

  13. #13
    Membre à l'essai
    Homme Profil pro
    alaindubois
    Inscrit en
    Février 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : alaindubois

    Informations forums :
    Inscription : Février 2015
    Messages : 38
    Points : 12
    Points
    12
    Par défaut
    Bonjour John Mc Evee et merci,

    Je regarde ça tout de suite, et vais essayer de faire au mieu, je ne demande qu'à apprendre.

  14. #14
    Membre à l'essai
    Homme Profil pro
    alaindubois
    Inscrit en
    Février 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : alaindubois

    Informations forums :
    Inscription : Février 2015
    Messages : 38
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par John Mc Evee Voir le message
    Avant de te donner la réponse toute faite, je vais faire preuve de pédagogie.
    Avec grand plaisir.

    Citation Envoyé par John Mc Evee Voir le message
    Dans un second temps je t'apprendrais à rendre dynamique cette macro pour que tu puisse l'exporter vers d'autre classeur.
    RE Avec grand plaisir

    Citation Envoyé par John Mc Evee Voir le message
    Si cela te va merci de reposter un code un peu plus épurer
    Voici le code modifié et tester avec succès.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Sub Macro1()
    '
    ' Macro1 Macro
    '
     
    '
        Columns("E:E").Select
        Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
        Range("E2").Select
        ActiveCell.FormulaR1C1 = "=RC[-1]&"" - ""&LEFT(RC[1],FIND(""/"",RC[1])-2)"
        Selection.AutoFill Destination:=Range("E2:E62"), Type:=xlFillDefault
        Range("E2:E62").Select
        Selection.Copy
        Range("D2:D62").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Columns("E:E").Select
        Selection.Delete Shift:=xlToLeft
    End Sub
    C'est vrai qu'il y avait beaucoup de lignes inutiles... Ta pédagogie m'a été utile j'ai pu enfin comprendre à quoi certaine instruction servait.

  15. #15
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 914
    Points : 5 121
    Points
    5 121
    Par défaut
    bonsoir
    essayez avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Sub extractionMots()
        Dim Tableau() As String
        Dim i As Integer
        Dim j As Long
        Dim t As Integer
        With Sheets("Catalogue")
        j = .Range("E" & Rows.Count).End(xlUp).Row
        For j = 1 To j
        Tableau = Split(.Cells(j, 5), "/")
        For i = 0 To UBound(Tableau)
            Debug.Print Tableau(i)
        Next i
        .Cells(j, 10) = Tableau(0)
        Next j
        End With
    End Sub
    --------------------------------------------------------------*****----------------------------------------------------------------------------
    Bonne Continuation & Plein Succès
    Notre seul pouvoir véritable consiste à aider autrui avec modestie
    ______________________________________________________
    Pour dire merci, cliquer sur et quand la discussion est résolue, penser à cliquer sur le bouton

  16. #16
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 914
    Points : 5 121
    Points
    5 121
    Par défaut
    pour concaténer avec la colonne D

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Sub extractionMots()
        Dim Tableau() As String
        Dim i As Integer
        Dim j As Long
        Dim t As Integer
        With Sheets("Catalogue")
        j = .Range("E" & Rows.Count).End(xlUp).Row
        For j = 1 To j
        Tableau = Split(.Cells(j, 5), "/")
        For i = 0 To UBound(Tableau)
            Debug.Print Tableau(i)
        Next i
        .Cells(j, 4) = .Cells(j, 4) & "   " & Tableau(0)
        Next j
        End With
    End Sub
    --------------------------------------------------------------*****----------------------------------------------------------------------------
    Bonne Continuation & Plein Succès
    Notre seul pouvoir véritable consiste à aider autrui avec modestie
    ______________________________________________________
    Pour dire merci, cliquer sur et quand la discussion est résolue, penser à cliquer sur le bouton

  17. #17
    Membre habitué
    Homme Profil pro
    Comptable
    Inscrit en
    Novembre 2018
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Novembre 2018
    Messages : 100
    Points : 158
    Points
    158
    Par défaut
    Re,

    Super et bon travail d'épuration

    Voici la seconde partie des explications. La première partie fais un focus sur la méthode Select qui est implémenté par défaut dans l'enregistreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    ' La deuxième étape consiste à retirer les select qui sont par nature inutile
     
        '*****************************************************************************
        ' 1- On passe de :
        ' Columns("E:E").Select
        ' Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
        ' à :
        Columns("E:E").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
        '*****************************************************************************
     
        '*****************************************************************************
        ' de :
        'Range("E2").Select
        'ActiveCell.FormulaR1C1 = "=RC[-1]&"" - ""&LEFT(RC[1],FIND(""/"",RC[1])-2)"
        ' à :
        Range("E2").FormulaR1C1 = "=RC[-1]&"" - ""&LEFT(RC[1],FIND(""/"",RC[1])-2)"
        '*****************************************************************************
     
        '*****************************************************************************
        ' de :
        'Selection.AutoFill Destination:=Range("E2:E62"), Type:=xlFillDefault
        ' à :
        Range("E2").AutoFill Destination:=Range("E2:E62"), Type:=xlFillDefault
        '*****************************************************************************
     
        '*****************************************************************************
        ' de :
        'Range("E2:E62").Select
        'Selection.Copy
        ' à :
        Range("E2:E62").Copy
        '*****************************************************************************
     
        '*****************************************************************************
        ' de :
        'Range("D2:D62").Select
        'Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        ' à : on retire les options par défaut et tu même écrire uniquement
        ' Range("D2").PasteSpecial Paste:=xlPasteValues
        Range("D2:D62").PasteSpecial Paste:=xlPasteValues
        '*****************************************************************************
     
        '*****************************************************************************
        ' de :
        'Columns("E:E").Select
        'Selection.Delete Shift:=xlToLeft
        ' à :
        Columns("E:E").Delete Shift:=xlToLeft
        '*****************************************************************************
     
        ' In fine tu n'a plus que cinq ligne !!!
    La second partie t'explique comme rendre dynamique la plage en fonction du nombre de donnée dans la colonne D

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
        ' Pour modifer la valeur E62 il faut rechercher la dernière cellule non vide en partant
        ' de la fin du classeur et en remontant (En fonction de la colonne D)
        '. Voici la commande suivante. avec les versions
        ' Récente le classeur possède environ 1 000 000 ligne donc à adapter
        Range("D65000").End(xlUp).Row
     
        ' Donc ta ligne de duplication de formule
        Range("E2").AutoFill Destination:=Range("E2:E62"), Type:=xlFillDefault
        ' Devient
        Range("E2").AutoFill Destination:=Range("E2:E" & Range("D65000").End(xlUp).Row), Type:=xlFillDefault
     
        ' Et ta ligne de copie
        Range("E2:E62").Copy
        ' devien
        Range("E2:E" & Range("D65000").End(xlUp).Row).Copy
     
        ' Enfin ta ligne de collage
        Range("D2:D62").PasteSpecial Paste:=xlPasteValues
        ' devient
        Range("D2:D" & Range("D65000").End(xlUp).Row).PasteSpecial Paste:=xlPasteValues
    Une fois cela fait, je te montrerai une technique qui purement en VBA qui fait le même travail sans avoir à utiliser une colonne tampon

  18. #18
    Membre à l'essai
    Homme Profil pro
    alaindubois
    Inscrit en
    Février 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : alaindubois

    Informations forums :
    Inscription : Février 2015
    Messages : 38
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par John Mc Evee Voir le message
    Super et bon travail d'épuration
    Tu m'as surtout bien expliqué!

    Citation Envoyé par John Mc Evee Voir le message
    Voici la seconde partie des explications. La première partie fais un focus sur la méthode Select qui est implémenté par défaut dans l'enregistreur.
    Oui effectivement c'est plus propre... mais le fait de laisser ce Select ne gêne pas en soi ? Cela complique (alourdit et peut-être ralentit l'exécution de la macro pour de gros fichier ?

    Citation Envoyé par John Mc Evee Voir le message
    La second partie t'explique comme rendre dynamique la plage en fonction du nombre de donnée dans la colonne D
    1 000 000 de lignes cela risque d'être juste .... plus sérieusement dans ton exemple c'est le D65000 qui indique la limite de la colonne D cela veut dire que la macro part de la ligne 65000 et remonte jusqu'a trouver la première cellule non vide ?

  19. #19
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 914
    Points : 5 121
    Points
    5 121
    Par défaut
    et a propos du poste 16??
    --------------------------------------------------------------*****----------------------------------------------------------------------------
    Bonne Continuation & Plein Succès
    Notre seul pouvoir véritable consiste à aider autrui avec modestie
    ______________________________________________________
    Pour dire merci, cliquer sur et quand la discussion est résolue, penser à cliquer sur le bouton

  20. #20
    Membre à l'essai
    Homme Profil pro
    alaindubois
    Inscrit en
    Février 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : alaindubois

    Informations forums :
    Inscription : Février 2015
    Messages : 38
    Points : 12
    Points
    12
    Par défaut
    Bonjour BENNASR

    Citation Envoyé par BENNASR Voir le message
    et a propos du poste 16??
    Je te remercie pour ton post.

    Je test çà tout de suite et te rapporte le résultat .

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 12
    Dernier message: 30/07/2004, 15h43
  2. [langage] vérifier les caractères d'une chaîne
    Par perlaud dans le forum Langage
    Réponses: 2
    Dernier message: 24/05/2004, 16h43
  3. [langage] remplacer les caractères d'une chaine
    Par perlaud dans le forum Langage
    Réponses: 14
    Dernier message: 12/05/2004, 11h05
  4. [Débutant][String] Remplacez les caractères speciaux
    Par paf15 dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 27/04/2004, 22h39
  5. changer les caracteres decouleurs
    Par jeclake dans le forum C
    Réponses: 5
    Dernier message: 16/04/2003, 17h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo