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 :

Copie d'une certaine partie de cellule


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Devellopeur amateur
    Inscrit en
    Mai 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Devellopeur amateur

    Informations forums :
    Inscription : Mai 2017
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Copie d'une certaine partie de cellule
    Bonjour

    Je travaille actuellement sur un Excel.

    Dans ma colonne C j'ai des notes qui sont précédé d'un code. Ex : RETOUR1 - Action non résol,RETOUR5 - Pouvez-vous pren

    Chaque texte après le code peut être différent.

    Du coup je tri le fichier pour ne récupérer que la partie code

    J'ai donc une formule fait sur Excel :

    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
    =SI(ESTNUM(CHERCHE("RETOUR1 ";E2));"RETOUR1 ";
    SI(ESTNUM(CHERCHE("RETOUR2 ";E2));"RETOUR2 ";
    SI(ESTNUM(CHERCHE("RETOUR3";E2));"RETOUR3";
    SI(ESTNUM(CHERCHE("RETOUR4";E2));"RETOUR4";
    SI(ESTNUM(CHERCHE("RETOUR5";E2));"RETOUR5";
    SI(ESTNUM(CHERCHE("RETOUR6";E2));"RETOUR6";
    SI(ESTNUM(CHERCHE("RETOUR7";E2));"RETOUR7";
    SI(ESTNUM(CHERCHE("RETOUR8";E2));"RETOUR8";
    SI(ESTNUM(CHERCHE("RETGS1";E2));"RETGS1";
    SI(ESTNUM(CHERCHE("RETGS2";E2));"RETGS2";
    SI(ESTNUM(CHERCHE("RETGS3";E2));"RETGS3";
    SI(ESTNUM(CHERCHE("RETGS4";E2));"RETGS4";
    SI(ESTNUM(CHERCHE("RETGS5";E2));"RETGS5";
    SI(ESTNUM(CHERCHE("RETGS6";E2));"RETGS6";
    SI(ESTNUM(CHERCHE("RETGS7";E2));"RETGS7";
    SI(ESTNUM(CHERCHE("RETGS8";E2));"RETGS8";))))))))))))))))

    Je copie cette formule dans une colonne.

    J'aimerais automatisé cette tache en Vbaet apres plusieurs essaie je me permet de vous demander de l'aide


    Merci d'avance

  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
    Déjà, tu pourrais simplifier ta fonction Excel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SIERREUR(STXT(E2;CHERCHE("RETOUR";E2);7);SIERREUR(STXT(E2;CHERCHE("RETGS";E2);6);""))
    apres plusieurs essaie je me permet de vous demander de l'aide
    Tu devrais montrer ce que tu as fait et indiquer ce qui ne convient pas dans le résultat que nous puissions t'aider à le corriger.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Devellopeur amateur
    Inscrit en
    Mai 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Devellopeur amateur

    Informations forums :
    Inscription : Mai 2017
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Tu devrais montrer ce que tu as fait et indiquer ce qui ne convient pas dans le résultat que nous puissions t'aider à le corriger.
    Ce que j'ai essaye n'a pas du tout marché. Dans mon exemple la colonne C a été rempli en collant la formule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    =SI(ESTNUM(CHERCHE("RETOUR1";D2));"RETOUR1";
    SI(ESTNUM(CHERCHE("RETOUR2";D2));"RETOUR2";
    SI(ESTNUM(CHERCHE("RETOUR3";D2));"RETOUR3";
    SI(ESTNUM(CHERCHE("RETOUR4";D2));"RETOUR4";
    SI(ESTNUM(CHERCHE("RETOUR5";D2));"RETOUR5";
    SI(ESTNUM(CHERCHE("RETOUR6";D2));"RETOUR6";
    SI(ESTNUM(CHERCHE("RETOUR7";D2));"RETOUR7";
    SI(ESTNUM(CHERCHE("RETOUR8";D2));"RETOUR8"))))))))

    Et j'aimerais une macro qui fait ça au lieu que je m’embête a coller la formule sur toutes les lignes


    Demo.xlsx

  4. #4
    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
    comme recommande Menhir ou presque tu peux simplifier ta formule ainsi :
    STXT(D2;1;TROUVE("-";D2;1)-1)
    Pour traduire cette formule en VBA il suffit de démarrer ton enregistreur Auto ce qui donne après qq traitement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Testttt()
    Dim Fi As Worksheet
    Dim L As Long
    Set F1 = Sheets("Feuil1")
    L = F1.Range("D" & Rows.Count).End(xlUp).Row
        F1.Range("C2").FormulaR1C1 = "=MID(RC[1],1,FIND(""-"",RC[1],1)-1)"
        F1.Range("C2").Select
        Selection.AutoFill Destination:=F1.Range("C2:C" & L), Type:=xlFillDefault
         F1.Range("C2:C" & L).Select
    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

  5. #5
    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 Tekio Voir le message
    J'aimerais automatisé cette tache en Vbaet apres plusieurs essaie je me permet de vous demander de l'aide
    Tu devrais montrer ce que tu as fait et indiquer ce qui ne convient pas dans le résultat que nous puissions t'aider à le corriger.
    Ce que j'ai essaye ne pas du tout.
    C'est toi qui a écrit que tu avais fait "plusieurs essais" en VBA. Aurais-tu menti ?

    En VBA, cette fonction ne sera pas plus simple.

    L'équivalent de la fonction Excel CHERCHE() est InStr().
    https://docs.microsoft.com/fr-fr/off...instr-function

    Pour savoir si la recherche est fructueuse, inutile d'utiliser l'équivalent de ESTNUM().
    Si elle ne trouve pas, la fonction InStr() renvoie 0.

    L'équivelent de STXT() est Mid().
    https://docs.microsoft.com/fr-fr/off...p/mid-function

    Tu peux donc faire quasiment l'équivalent de ta fonction Excel en VBA.
    Mais il serait plus propre de passer par un Select True en mettant la recherche de RETOUR et RETG dans les Case.
    https://docs.microsoft.com/fr-fr/off...case-statement
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  6. #6
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut.

    Si tu nous disais ce que tu cherches à obtenir. Imbriquer autant de SI est rarement une bonne idée. De plus, si tes données s'y prêtent, tu aurais intérêt à utiliser une table de données (tableau structuré) => tu ne devrais alors pas recopier ta formule sur les lignes (https://fauconnier.developpez.com/tu...ux-structures/)



    Nom : 2019-06-25_155100.png
Affichages : 180
Taille : 6,3 Ko


    Au passage: CHERCHE => pas de différenciation majuscules/minuscules. TROUVE: différenciation majuscules/minuscules
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

Discussions similaires

  1. Appliquer son style sur une certaine partie de la page
    Par Invité dans le forum Mise en page CSS
    Réponses: 14
    Dernier message: 13/04/2015, 10h57
  2. [Batch] Lire une certaine partie d'un fichier texte
    Par Alwaysin dans le forum Scripts/Batch
    Réponses: 6
    Dernier message: 29/03/2012, 19h51
  3. [XL-2007] problème de codage en vba ("copie d'une partie d'une cellule dans une cellule vide")
    Par skipeemed dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 26/10/2010, 17h01
  4. selection d'une cellule sur une certaine ligne
    Par florent149 dans le forum Macros et VBA Excel
    Réponses: 33
    Dernier message: 20/07/2006, 17h37
  5. Colorer une certaine partie du texte en console
    Par Geoff-sk8 dans le forum C
    Réponses: 9
    Dernier message: 14/01/2006, 19h40

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