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 :

couper une partie des données dans une autre colonne [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2011
    Messages : 2
    Points : 2
    Points
    2
    Par défaut couper une partie des données dans une autre colonne
    Bonjour à tous,

    Je suis nouveau et totalement débutant en programmation de macro... A vrai dire, au lieu de les programmer, je les enregistre habituellement....

    Enfin, cette fois, l'exercice est impossible a effectuer en enregistrement simple...

    Voici un extrait de mon tableau sur excel 2007

    http://www.casimages.com/img.php?i=1...2945425307.png

    J'aimerais pouvoir créer une macro qui détecte automatiquement la parenthèse de la colonne E pour la couper/coller dans la colonne F. De cette manière, il ne resterait que le nom de la ville dans la colonne E.

    Si quelqu'un peut m'aider ca serait vraiment sympa...

    Merci

  2. #2
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 814
    Points : 2 949
    Points
    2 949
    Billets dans le blog
    10
    Par défaut
    Bonjour,
    Déjà, je tiens à dire que ce que tu souhaites et réalisable par formule en passant par une colonne intermédiaire...
    Mais bon...
    Avec ce code, tu peux réaliser ce que tu souhaites :
    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
    Sub test()
    Dim Lign As Long
    Dim Chaine As String
     
    With Sheets("Feuil1") ' à adapter ==> le nom de ta feuille
    'de la lign 6 à 14 A ADAPTER
    For Lign = 6 To 14
        'vérifie la présence d'une parenthèse ouvrante dans la cellule
        If InStr(.Cells(Lign, 5), "(") <> 0 Then
            'on stocke, dans la variable Chaine le contenu de la cellule Col E
            Chaine = .Cells(Lign, 5)
            'on extrait la partie à gauche de (
            .Cells(Lign, 5) = Left(Chaine, InStr(Chaine, "(") - 2)
            'on extrait la partie à droite de (
            .Cells(Lign, 6) = Right(Chaine, Len(Chaine) - InStr(Chaine, "(") + 1)
        End If
    'ligne suivante
    Next
    End With
    End Sub
    Cordialement,
    Franck

  3. #3
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Bonjour,
    il faut que tu utilises la fonction split.

    Voici un exemple à adapter, notamment le nom de la feuille, dans le code "Feuil1".
    le code recherche l'espace entre le nom de la ville et la parenthèse, coupe la chaine de caractère et la met dans un tableau. La première entrée du taleau (mtab(0)) = colonne E, la deuxième entrée (mtab(1)) = colonne F
    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 test()
    Dim chaine As String, plage As Range
    Dim mTab
     
    With Sheets("Feuil1")
    Set plage = .Range("E6:E" & .Range("E" & .Rows.Count).End(xlUp).Row)
    End With
     
    For Each c In plage
    chaine = c.Value
     
    If InStr(1, chaine, " ") <> 0 Then
      mTab = Split(chaine, " ")
      c.Value = mTab(0)
      c.Offset(0, 1).Value = mTab(1)
    End If
     
    Next c
    End Sub
    @+

    Si vous avez trouvé la solution à votre problème n'oubliez pas d'appuyer sur
    Et n'oubliez pas de voter en appuyant sur si ce message a repondu à vos attentes.
    Ou sur si ce n'est pas le cas

  4. #4
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2011
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Les deux codes marchent très bien mais le premier est plus adapté à mes données car j'ai des noms de villes composés et donc avec plusieurs espaces.

    Vous m'avez fais gagner un temps précieux !

    merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XML] Enregistrer des données dans une partie d'un xml existant (assez urgent) Merci
    Par jameson dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 29/11/2010, 13h26
  2. [MySQL] Extraire des données d'une table si absentes dans une autre
    Par renaud26 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 05/03/2009, 18h39
  3. Réponses: 8
    Dernier message: 14/12/2007, 16h04
  4. Enregistrer des données dans une base de donnée
    Par fabienlege dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 18/04/2007, 16h34
  5. [MySQL] Modifier des données dans une base de donnée
    Par leloup84 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 26/01/2006, 09h56

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