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 :

[VBA-E] Eclater les valeurs d'une cellue sur plusieurs colonnes


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 63
    Points : 44
    Points
    44
    Par défaut [VBA-E] Eclater les valeurs d'une cellue sur plusieurs colonnes
    Bonjour

    Dans un tableur excel j'ai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     AN    01 000001 000002 01/01/06 NOUVEAU1.500.000,00   1.500.000,00  C   
    TOTAL COMPTE : 1010000  CAPITAL 1.500.000,00   1.500.000,00  C
    Le découpage n'est pas uniforme je ne peux pas utiliser l'outils convertir sur l'ensemble de ma feuille

    Dans une boucle je pensais repérer les lignes commençant par AN et appliquer mon formatage puis repérer celle commançant par Total en appliquant un formatage différent.

    Problème je n'arrive pas à rester dans la cellule en cours voilà le code

    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
     
    Sub Cherche()
     
      Dim Plage   As Range
      Dim Cellule As Range
      Dim Posit   As Long
      Dim NBLig
     
    NBLig = 5
     
      On Error Resume Next
      Set Plage = Sheets("GRAND LIVREm").Range(Cells(1, 1), Cells(NBLig, 1))
      For Each Cellule In Plage
     
            Posit = Application.WorksheetFunction.Find("AN", Cellule.Value)
            If Posit = 2 Then
     
            MsgBox (Cellule.Address(RowAbsolute:=False)) // Affiche $Ax
     
        Selection.TextToColumns Destination:=Cellule.Address(RowAbsolute:=False), DataType:=xlFixedWidth, _
            FieldInfo:=Array(Array(0, 1), Array(4, 1), Array(9, 1), Array(16, 1), Array(23, 1), _
            Array(32, 1), Array(65, 1), Array(99, 1), Array(113, 1)), TrailingMinusNumbers:=True
     
            Posit = 0
            End If
     
      Next
     
    End Sub
    Merci pour votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir Sosophie,

    Si j'ai bien compris vous avez des cellules commençants par "AN" et d'autres par "TOTAL COMPTE".
    Les cellules "AN" ont toutes le même nombre de champs séparés par des espaces (sauf semble t'il le champ "NOUVEAUavec un montant accolé).
    Les cellules "TOTAL COMPTE" ont toutes le même nombre de champs séparés par des espaces mais ce nombre est différent des lignes "AN".

    Vous voulez copier ces champs dans des cellules différentes et adjacentes ?

    J'ai bien compris ?

    Si oui, cela me paraît faisable, mais il faudrait montrer un exemple de ce que vous voulez obtenir avec simplement deux cellules "AN" et deux "TOTAL COMPTE".

    Amicalement.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Points : 451
    Points
    451
    Par défaut
    Citation Envoyé par sosophie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Selection.TextToColumns Destination:=Cellule.Address(RowAbsolute:=False), DataType:=xlFixedWidth, _
            FieldInfo:=Array(Array(0, 1), Array(4, 1), Array(9, 1), Array(16, 1), Array(23, 1), _
            Array(32, 1), Array(65, 1), Array(99, 1), Array(113, 1)), TrailingMinusNumbers:=True
    Bonjour, ton probleme se situe dans la Selection, comme tu ne selectionnes rien, il s'agit de la cellule active... Il faut en general eviter d'utiliser Selection.
    Ensuite la Destination doit etre un Range et non pas un String, or Cellule.Address ne donne pas une cellule mais une chaine de caractere :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Cellule.TextToColumns Destination:=Cellule, DataType:=xlFixedWidth, _
         FieldInfo:=Array(Array(0, 1), Array(4, 1), Array(9, 1), Array(16, 1), Array(23, 1), _
         Array(32, 1), Array(65, 1), Array(99, 1), Array(113, 1)), TrailingMinusNumbers:=True
    Voila, normalement ca devrait fonctionner...

    Encore une chose, tu peux egalement remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Posit = Application.WorksheetFunction.Find("AN", Cellule.Value)
            If Posit = 2 Then
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cellule.Value Like " AN*" Then

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 63
    Points : 44
    Points
    44
    Par défaut
    Ok ça marche super!

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

Discussions similaires

  1. mettre les résultat d'une requête sur plusieurs colonne
    Par irma2011 dans le forum Requêtes
    Réponses: 4
    Dernier message: 11/01/2012, 11h09
  2. Réponses: 2
    Dernier message: 18/06/2008, 17h29
  3. Réponses: 2
    Dernier message: 04/01/2008, 07h42
  4. Réponses: 2
    Dernier message: 04/01/2008, 07h42
  5. [VBA-E] Effacer les valeurs d'une plage de cellules
    Par jfamiens dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 10/06/2006, 11h07

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