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 :

tronquer le contenu d'une cellule [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 105
    Par défaut tronquer le contenu d'une cellule
    Bonjour tout le monde,
    Je suis bloqué sur un sujet bête si vous pouvez m’aider ça pourrait m’avancer
    Alors voilà j’ai dans les cellules de ma colonne A des mots séparés par des *, je souhaite en effet créer une macro qui parcourt le contenu de chaque cellule de la colonne A, une fois qu'elle rencontre une étoile dans le contenu elle devra copier le mot après * et l’insérer dans la cellule ci-dessous.


    J’ai pensé aux fonctions right et left mais je n’y arrive pas.

    Merci beaucoup pour votre aide !

    Cordialement,

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Par défaut
    Bonjour

    tu peux utiliser

    à adapter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim posit As Long
    On Error Resume Next
     
    posit = InStr(1, Cells(boucle, 1), "*")
    If posit > 0 Then
      Cells(boucle + 1, 1) = Mid(Cells(boucle, 1), posit + 1, Len(Cells(boucle, 1)) - posit)
    End If
     
    On Error GoTo 0
    la gestion d'errreur est la au cas ou la cellule serait vide

    la variable boucle correspond comme son nom l'indique à la variable que utilisera dans ta boucle

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 105
    Par défaut
    Bonjour Zyhack,

    J ai essaye de l adapter mais la macro ne marche pas dans le cas ou il y a par exemple dans A1 aaa*bbb*ccc*d, dans A2 cvb*df*sdfg*sdf
    Le resultat que je cherche est le suivant :
    A1 contient aaa
    A2 contient bbb
    A3 contient ccc
    A4 contient d
    A5 contient cvb
    A6 contient df
    A7 contient sdfg
    A8 contient sdf

    Etc…

    Merci bcp pour ton aide Zyhack

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Par défaut
    Bonjour

    J ai essaye de l adapter mais la macro ne marche pas dans le cas ou il y a par exemple dans A1 aaa*bbb*ccc*d, dans A2 cvb*df*sdfg*sdf
    Le resultat que je cherche est le suivant :
    A1 contient aaa
    A2 contient bbb
    ...
    comme souvent il suffit d'être le plus précis possible dès le début sur ce que l'on souhaite obtenir

    En passant par des tableaux pour aller plus vite
    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
    Sub test()
    Dim celC() As String
    Dim mots() As String
    Dim BCell As Long, index As Long
    Dim BTab As Integer
     
    index = 0
    'Boucle dans les cellules de la colonne1
    For BCell = 1 To Cells(Rows.Count, 1).End(xlUp).Row
      'si elle n'est pas vide
      If Cells(BCell, 1) <> "" Then
        'si elle contient *
        If InStr(1, Cells(BCell, 1), "*") > 0 Then
          'sépare les valeurs et les met en tableau
          celC = Split(Cells(BCell, 1), "*")
          'Récupère dans un autre tableau toutes les valeurs
          For BTab = 0 To UBound(celC)
            ReDim Preserve mots(index)
            mots(index) = celC(BTab)
            index = index + 1
          Next
        End If
      End If
    Next
     
    'décommenter la ligne suivant au cas ou il faut vider la colonne pour faire propre
    'Columns(1).ClearContents 
     
    'colle le tableau à partir de A1
    Range("A1:A" & UBound(mots) + 1) = Application.WorksheetFunction.Transpose(mots)
    End Sub

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

Discussions similaires

  1. Réponses: 18
    Dernier message: 13/04/2006, 16h35
  2. [VBA-E]contenu d'une cellule gestion erreur macro
    Par matou_aouh dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/03/2006, 11h18
  3. [VBA]Copier le contenu d'une cellule d'un autre classeur
    Par dudu59 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 01/02/2006, 18h08
  4. Réponses: 3
    Dernier message: 27/01/2006, 19h35
  5. Importer le contenu d'une cellule Excel vers Access
    Par deaqu1 dans le forum Access
    Réponses: 7
    Dernier message: 05/11/2005, 16h26

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