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 :

Macro de fractionnement cellule


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Agroalimentaire
    Inscrit en
    Décembre 2015
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Agroalimentaire

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1
    Par défaut Macro de fractionnement cellule
    Bonjour à tous, et joyeuses fêtes par la même occasion,

    Je tiens tout d'abord remercier tous ceux qui proposent leur aide gratuitement sur ce forum qui m'a déjà aidé à maintes reprises !
    Je tenté de trouver quelque chose sur le forum qui ressemble à ma demande mais je ne vois rien de semblable (Jamais la condition de fractionnement contient une variable) (désolé si je suis passé a coté de quelque chose...)

    Ma question est la suivante :
    Dans la Feuil1 d'un excel, j'ai une valeur dans la cellule A1.

    Cette valeur est du type code à barres EAN128 :
    Exemples :
    (00)14256(01)123(02)1245
    (00)112(01)11456(02)100000
    (00)12(17)1146(66)1000

    Donc elle se compose de "champs" : (XX) , dont les X peuvent aller de 0 à 9 ; suivi des valeurs que peuvent prendre les champs (Dont la longueur est variable)

    Je recherche une macro qui me permettrais lorsque je la lance, d'analyser la valeur en A1, et répartir les champs dans la feuil2 d'excel.

    Donc avec un exemple :
    A1 de la feuil1 = (00)12345(03)111(06)L17A45(30)123

    Si je lance la macro :
    Dans la feuil2
    Colonne 00 = Colonne A:A ==> Cellule A1 = 12345
    Colonne 03 = Colonne D:'D ==>Cellule D1 = 111
    Colonne 06 = Colonne G:G ==>Cellule G2 = L17A45
    Colonne 30 = Colonne AE:AE ==>Cellule AE1 = 123

    Si j'entre une nouvelle valeur dans A1 de la Feuil1, et que je relance la macro, elle supprime les valeurs de la ligne 1 par les nouvelles et ainsi de suite.

    Il faut certainement utiliser la fonction split, mais je ne vois pas comment si le critère est une variable (critère valant (00) jusqu'à (99)
    Pouvez-vous m'aider ?
    Merci

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonjour,

    si tu veux utiliser split tu peu par exemple utiliser le processus suivant :

    1. Tu récupére ta ligne dans une variable string
    2. Tu remplace les parenthése ouvrante par une parenthése fermée (fonction replace)
    3. tu effectue un split avec parenthése fermé ..
    4. tu parcours 2 éléments par 2 éléments le tableau issu de ton split
    5. le 1° élément te permet de connaitre la colonne de destination, le 2° élément c'est la valeur à placé ...
    6. et voilà..

  3. #3
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Bonjour,

    Traduction de la méthode de bbil :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Option Explicit
    Private Sub Répartir()
    Dim t() As String
    Dim c As Long
    Dim i As Byte
      Worksheets(2).Rows(1).Clear
      Worksheets(2).Rows(1).NumberFormat = "@"
      t = Split(Replace([A1].Value, ")", "("), "(")
      For i = 1 To UBound(t) Step 2
       c = t(i) + 1
       Worksheets(2).Cells(1, c).Value = t(i + 1)
      Next i
    End Sub

Discussions similaires

  1. XL 2007 : Macro recherche/copie valeur cellule comprise en 2 valeurs
    Par toom38 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/07/2014, 14h19
  2. [XL-2007] Macro pour colorier des cellules en fonction de données
    Par stephane12 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/05/2014, 07h51
  3. lancement macro suite à changement cellule
    Par dvguy dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/12/2006, 08h45
  4. Réponses: 2
    Dernier message: 21/06/2006, 17h57
  5. [VBA-E] Macro pour copier cellules
    Par jfamiens dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 07/06/2006, 20h02

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