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 :

Split colonne AC en Colonne AC et AD [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2013
    Messages : 50
    Par défaut Split colonne AC en Colonne AC et AD
    Bonjour,

    Je vous écris pour essayer de comprendre la raisson du non fonctionnement de ma macro.

    J'ai une macro avec 4 subs. Parmis eux, j'ai un qui doit couper l'information qui est sur la colonne("AC"), après le dixième charactère qui est un espace (" "), et mettre les characteres suivantes dans la colonne ("AD").

    Voici mon code.
    Nb; pardon pour mon français que ça fait peu que je le parle.

    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
    Sub splitcolonne()
     
    'split colonne ship to et name produit
    objWorkbook = ActiveWorkbook.Name
    objWorksheet = objWorkbook.Worksheets("Zsales")
    DLigneA = Range("AC100000").End(xlUp).Row
    DLigneB = Range("AD100000").End(xlUp).Row
    Dim currentcell As Variant
     
    Set objRange = currentcell.DLigneA
    Set objRange2 = currentcell.DLigneB
     
    objRange.TextToColumns objRange2, , , , , , True
     
    End Sub
    L'erreur qui m'affiche est une manque d'objet.

    Merci d'avance.

    Cordialement

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 153
    Par défaut
    Bonjour,

    Essaie ça (le splitcolonne2, pas le splitcolonne):

    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
     Sub splitcolonne()
     
    'split colonne ship to et name produit
    Set objWorkbook = ActiveWorkbook 'Pas besoin du .name - Si tu initialises un objet le set est de rigueur
    Set objWorksheet = objWorkbook.Worksheets("Zsales") 'idem pour le set
    DLigneA = Range("AC100000").End(xlUp).Row
    DLigneB = Range("AD100000").End(xlUp).Row
    Dim currentcell As Variant
     
    Set objRange = currentcell.DLigneA 'Ici tu essaies de récupérer un attribut d'un objet qui n'a pas été initialisé
    Set objRange2 = currentcell.DLigneB 'idem
     
    objRange.TextToColumns objRange2, , , , , , True
     
    End Sub
    'Bon en fait on va faire comme ça
    Sub splitcolonne2()
    Dim objRange As Range
    Set objRange = ActiveWorkbook.Worksheets("Zsales").Columns("AC:AC")
         objRange.TextToColumns Destination:=objRange.Offset(0, 1), DataType:=xlFixedWidth, _
            FieldInfo:=Array(Array(0, 1), Array(10, 1)), TrailingMinusNumbers:=True
     
    End Sub

    PS: J'ai refait ton code, mais j'ai aussi commenté les erreurs de ton code initial, je t'invite à y jeter un coup d'oeil. Bon mon code n'est pas très propre non plus cela dit.

  3. #3
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Sur quelle ligne ?

    Par ailleurs, dans ton code, je ne vois aucun split
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  4. #4
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2013
    Messages : 50
    Par défaut
    @Bonjour Illight,

    Si j'ai bien compris ta question. Je veut que la macro fasse le split depuis la ligne 1 jusqu'a la dernier ligne non vide.
    C'est vrai que dans le code j'utilise TextToColumns et pas de Split.

    @Bonjour Mr. Poulpe, merci beaucoup, je vais essayer ton code!

    Cordialement,

    Oui, ce code marche bien!
    Alors, je viens de me rendre compte que ce dont j'ai besoin c'est plutôt split. En effet, j'ai besoin d'diviser la colonne AC et mettre l'autre parti des characteres dans la AD.

    Pourriez vous m'indiquer une solution differente, avec Split?

    Merci d'avance.

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 153
    Par défaut
    Bonsoir,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub splitcolonne2()
    Dim objRange As Range
    Set objRange = ActiveWorkbook.Worksheets("feuil1").Columns("AC:AC")
         objRange.TextToColumns Destination:=objRange, DataType:=xlFixedWidth, _
            FieldInfo:=Array(Array(0, 1), Array(10, 1)), TrailingMinusNumbers:=True
     
    End Sub
    Cordialement,

    Poulpe

  6. #6
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2013
    Messages : 50
    Par défaut
    Merci beaucoup! Finalement j'ai applique cette longue mais efficace Sub.

    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
    Sub splitcolonne2()
     
    Dim dSpace As Integer
    Dim VGauche As String
    Dim VDroite As String
    Dim cellValue As String
    Dim cellResult As String
    Dim iRow As Integer
     
    Set objWS = ActiveWorkbook.Worksheets("Zsales")
     
    iRow = 1
    cellValue = objWS.Cells(iRow, 29)
    Do While cellValue <> ""
            cellValue = objWS.Cells(iRow, 29)
            dSpace = InStr(1, cellValue, " ")
            VGauche = Left(cellValue, dSpace)
            VDroite = Mid(cellValue, dSpace + 1)
     
            objWS.Cells(iRow, 30).Value = VDroite
            objWS.Cells(iRow, 29).Value = VGauche
            iRow = iRow + 1
    Loop
     
     
    End Sub
    Bon nuit.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/02/2007, 11h04
  2. Réponses: 5
    Dernier message: 07/11/2006, 11h16
  3. [D7] StringGrid afficher une colonne comme 1e colonne visibl
    Par raoulmania dans le forum Composants VCL
    Réponses: 2
    Dernier message: 15/12/2005, 14h23
  4. resultat d'une colonne en deux colonne
    Par Challenger dans le forum Langage SQL
    Réponses: 3
    Dernier message: 03/11/2005, 08h23
  5. Noms de colonne dans une colonne
    Par Digirom dans le forum Langage SQL
    Réponses: 14
    Dernier message: 23/04/2004, 11h51

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