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

Excel Discussion :

Splitter des données d'une cellule contenant une fonction


Sujet :

Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 8
    Par défaut Splitter des données d'une cellule contenant une fonction
    Bonjour à tous,

    J'avais déjà mis un poste à propos de ce ficher Excel la semaine dernière et les réponses m'avaient bien aidée ! Cependant, il y a une limite à la réponse que l'on m'a donnée. Je souhaite splitter des données séparées par un ; obtenues par une formule et qui se trouvent dans une même cellule dans des cellules différentes afin de les exploiter plus facilement ensuite (voir capture d'écran ci-joint pour avoir plus de détails). Les formules que l'on m'a donné la semaine dernière fonctionnent parfaitement lorsque je n'ai que 2 données.
    Voici les formules en question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    =GAUCHE(C2;TROUVE(";";C2)-1)
    =STXTB(C2;TROUVE(";";C2)+1;1000)
    Or, il arrive que j'en ai 6 ou 5 (voir capture d'écran). Cela dépend. Avez vous une solution pour adapter les formules et/ou créer une macro ?

    Je vous remercie pour votre aide,

    Nom : Macro.PNG
Affichages : 202
Taille : 12,4 Ko

  2. #2
    Membre Expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 475
    Par défaut
    Salut,

    Voici un truc à adapter à ton contexte (prends les données dans la colonne A pour les répartir à partir de B en fonction du nombre d'éléments) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Test_Split()
        Columns("A:A").Select
        Selection.TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
            Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
            :=";", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1)), _
            TrailingMinusNumbers:=True
    [A1].Select
    End Sub

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 8
    Par défaut
    Merci ! Toutefois je débute, donc ce n'est pas évident de savoir ce qu'il faut adapter...

  4. #4
    Membre Expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 475
    Par défaut
    Re-,
    C'est assez difficile de'être certain de la bonne réponse quand on ne connaît pas tout l'utilité et l'utilisation de ton fichier.
    Je peux te proposer cette adaptation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Selection.TextToColumns Destination:=Range(ActiveCell.Offset(0, 1).AddressLocal(ColumnAbsolute:=False, RowAbsolute:=False)), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
            Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
            :=";", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1)), _
            TrailingMinusNumbers:=True
    Si tu démarres le code au moment où tu as sélectionné la cellule à splitter, l'effet sera reporté sur les colonnes à droite. C'est la partie suivante qui permet de détecter l'endroit où tu te situais et où il doit aller.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.Offset(0, 1).AddressLocal(ColumnAbsolute:=False, RowAbsolute:=False)

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 8
    Par défaut
    Bonjour,

    Tout d'abord merci pour ta réponse. Pour être plus précise, je voudrais que les données de la colonne C obtenues grâce à une formule se split ensuite dans des cellules différentes comme sur l'image (j'ai recopié les données à la main). Parce que depuis la formule je ne peux pas vraiment les exploiter (je ne peux pas faire de copier coller d'une seule donnée par exemple).
    Est-ce plus clair ?

    Merci,
    Images attachées Images attachées  

  6. #6
    Membre éprouvé
    Inscrit en
    Juin 2009
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 93
    Par défaut
    Bonjour MathDbrn
    La macro que t'a donné QuestVBA va lancer la fonction "convertir" de l'onglet "Donnée" avec le ";" comme séparateur. Cela aura pour effet de séparer ta cellule en autant de cellule qu'il y avait de valeurs séparées par des ";". La différence avec ta présentation est que toutes les valeurs seront sur une même ligne et pas en colonne.
    Tu peux faire un copier / coller spécial avec transposition.
    Pour cela, ne néglige pas l'enregistreur de macro, de l'onglet développeur
    => tu lances l'enregistreur
    => tu éxécutes tes actions (convertir / copier / coller spécial avec transposition)
    => tu arrêtes l'enregistrement de la macro
    => tu analyses ton code et fais les quelques modifications nécessaires (typiquement : le nombre de cellule à prendre en considération pour le copier)

    Nekko

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/02/2017, 12h03
  2. Réponses: 2
    Dernier message: 29/07/2016, 16h49
  3. Réponses: 5
    Dernier message: 21/03/2016, 18h48
  4. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  5. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59

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