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 :

séparer le contenu d'une cellule a partir d'un terme spécifique


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 42
    Par défaut séparer le contenu d'une cellule a partir d'un terme spécifique
    Bonjour,

    Je souhaiterais séparer le contenu d'une cellule en 2.

    Je m'explique :

    J'ai par exemple SARL Winnie en A1,

    Je voulais savoir s'il était possible de diviser le contenu de la cellule,
    =>c-a-d garder "winnie" en "A1 et avoir en A2 "SARL.

    Je pense qu'une macro serait d'actualité.

    Merci de me dire la faisabilité du projet.

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Une méthode générale n'est pas disponible
    Comment on saura quoi mettre dans la première partie et dans la deuxième
    S'il y a un (des) critère(s) de séparation du contenu de la cellule

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 42
    Par défaut
    Citation Envoyé par mercatog Voir le message
    Une méthode générale n'est pas disponible
    Comment on saura quoi mettre dans la première partie et dans la deuxième
    S'il y a un (des) critère(s) de séparation du contenu de la cellule
    en fait j'ai pas tout dis, désolée.

    Je vais mieux m'expliquer.

    J'ai un fichier avec 40 000 entreprises.

    Dans la cellule A1 figure leur nom et la forme de leur société (SARL, SAS, SASU, EURL,...)=>toujours écris de la même manière

    Détail supplémentaires :

    Le nom de l'entreprise peut contenir un ou plusieurs mots (séparés)
    exemple : SARL TRANSPORT RAPIDE DE VILLE.

    Ce que je veux donc, c'est isolé la forme juridique du nom de l'entreprise.

    Je pensais donc à une macro qui dirait :
    - dans la colonne A => je recherche tous les "SARL"
    - Je les copie dans B
    - je les supprime de A

    et je ferais ca pour toutes les formes de sociétés.

    Je suis plus clair?
    __________________
    "Un problème sans solution est un problème mal posé."

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Essaies ceci
    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
    Dim LastLig As Long, i As Long
    Dim N As Integer
    Dim TypSte As String, BdSte As String
     
    Application.ScreenUpdating = False
    BdSte = "SARL_SASU_EURL"        'Mettre tous les type de sociétés séparés par _
    With Sheets("Feuil2")           'Adapter le nom de la feuille
        LastLig = .Cells(Rows.Count, 1).End(xlUp).Row
        For i = 2 To LastLig
            N = InStr(Trim(.Range("A" & i).Value), " ")
            If N > 0 Then
                TypSte = Left(.Range("A" & i).Value, N - 1)
                If InStr(BdSte, TypSte) > 0 Then
                    .Range("B" & i).Value = TypSte
                    .Range("A" & i).Value = Mid(.Range("A" & i).Value, N + 1)
                End If
            End If
        Next i
    End With

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 42
    Par défaut
    je joint un fichier exemple au cas ou.

    j'essai ce qui m'est proposé

    merci pr les reponses
    Fichiers attachés Fichiers attachés

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Au lieu qu'à chaque fois ajouter des précisions, il fallait faire un effort pou expliquer le sujet.
    Bon pour ton fichier
    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
    Dim LastLig As Long, i As Long
    Dim N As Integer, M As Integer
    Dim TypSte As String, BdSte As String
     
    Application.ScreenUpdating = False
    BdSte = " SARL _ SASU _ EURL _ SA _ M _ MME _ MLLE "        'Mettre tous les type de sociétés séparés par " _ " espace underscore expace
    With Sheets("Feuil1")                                       'Adapter le nom de la feuille
        LastLig = .Cells(Rows.Count, 1).End(xlUp).Row
        For i = 3 To LastLig
            N = InStr(Trim(.Range("A" & i).Value), " ")
            M = InStrRev(Trim(.Range("A" & i).Value), " ")
            If N > 0 Then
                TypSte = Left(.Range("A" & i).Value, N - 1)
                If InStr(BdSte, TypSte) > 0 Then
                    .Range("B" & i).Value = TypSte
                    .Range("A" & i).Value = Mid(.Range("A" & i).Value, N + 1)
                Else
                    If M > 0 Then
                        TypSte = Mid(.Range("A" & i).Value, M + 1)
                        If InStr(BdSte, TypSte) > 0 Then
                            .Range("B" & i).Value = TypSte
                            .Range("A" & i).Value = Left(.Range("A" & i).Value, M - 1)
                        End If
                    End If
                End If
            End If
        Next i
    End With

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    389
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 389
    Par défaut
    Bonjour,

    On peut utiliser l'espace comme délimiteur, pour cela on peut le faire sans macro
    Dans la barre de Menus, Données, Convertir.. et choisir l'espace comme délimiteur.

    Pour SARL Winnie pas de problème on obtient SARL et Winnie dans 2 cases
    Par contre pour S A R L Winnie il y aura problème
    Même chose si la chaine à décomposer est Socièté Copérative Ouvrière Winnie
    Pas toujours facile de décomposer une chaine, plus de précisions seraient bien venues

    JP

Discussions similaires

  1. Séparer le contenu d'une cellule en plusieurs lignes
    Par CrasherSEP dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 24/06/2014, 13h32
  2. [XL-2007] Séparer le contenu d'une cellule en plusieurs lignes
    Par Mimosa777 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/12/2011, 17h36
  3. Réponses: 1
    Dernier message: 21/05/2008, 16h48
  4. Réponses: 9
    Dernier message: 26/09/2007, 16h18
  5. Ouvrir un fichier excel à partir du contenu d'une cellule
    Par Lou12 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/07/2006, 13h28

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