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 :

conversion cellule en ligne et itération


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 2
    Par défaut conversion cellule en ligne et itération
    Demande d’aide
    Bonjour, je suis à la recherche d’une bonne âme… afin de m’aider à automatiser sous excel une procédure. Je dispose de plusieurs centaines de fichier avec l’architecture comme la feuille « départ » du fichier joint (je sais j’ai lu les précautions du forum mais je parviens pas à formuler correctement l’ensemble de la manip parce que je vois pas comment faire). Rapidos, il s’agit de matériel archéologique relevé dans un carroyage, en l’occurrence des tessons.
    La colonne recipient donne le num du recipient / la colonne couche la couche dans laquelle il se trouve /La colonne m2, situe le carré / tesson le numéro de tesson / les coordonnées x,y,z puis les liens avec les autres tessons = les recollages, selon le principe la tesson numéro 157 situé dans le carré d12 avec les coordonnées x,y,z, recolle avec les tessons d12_158 (/) et d12_168 etc etc…
    La feuille «arrive » est la structure demandée…
    Il s’agit
    1 d’enlever l’underscore sur la colonne C pour passer de D_12 à D12
    2 concatener avec un underscore en plus D12_colonne D (tesson) = création colonne IS dep
    3 d’extraire l’information des cellules de la colonne des recollages pour générer une ligne par recollage possible (colonne IS dep, selon la structure indiqué dans la feuille « arrive », c'est-à-dire colonne recipient / couche / m2/IS dep/IS ar, soit autant de ligne avec IS dep identique au nombre IS ar de départ….

    Comme je suis pas un programmateur, que je ne fais pas, peu , pas assez de VB, je me demandais si quelqu’un pouvait m’aider à automatiser la manipulation (si cela vous parait possible)… parce que j’ai vraiment plus d’une centaine de feuilles identiques avec un nombre de ligne très très important…
    Merci d’avance pour votre aide
    Bertmoul
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Voici une solution pour répartir les données.
    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
    32
    33
    34
    35
    Sub Convertir()
    Dim WsSource As Worksheet, WsCible As Worksheet
    Dim DerLigS As Long, DerLigC As Long
    Dim MaPlage As Range, Cel As Range
    Dim Recollages() As String, Texte() As String
    Dim Ligne As Byte
        Set WsSource = Worksheets("depart")
        Set WsCible = Worksheets("arrive")
        DerLigS = WsSource.Range("A" & WsSource.Rows.Count).End(xlUp).Row
        Set MaPlage = WsSource.Range("A2:A" & DerLigS)
        For Each Cel In MaPlage
            DerLigC = WsCible.Range("E" & WsCible.Rows.Count).End(xlUp).Row
            'Sépare les recollages
            Recollages = Split(Cel.Offset(0, 7), "/")
            For i = 0 To UBound(Recollages, 1)
                Texte = Split(Recollages(i), "_")
                Recollages(i) = Texte(0) & Texte(1)
                If UBound(Texte, 1) > 1 Then _
                Recollages(i) = Recollages(i) & "_" & Texte(2)
            Next
            With WsCible
                .Range("A" & DerLigC + 1) = Cel.Value 'recipient
                .Range("B" & DerLigC + 1) = Cel.Offset(0, 1) 'couche
                .Range("C" & DerLigC + 1) = Cel.Offset(0, 2) 'm_2
                .Range("D" & DerLigC + 1) = Cel.Offset(0, 3) 'tesson
                For Ligne = 0 To UBound(Recollages, 1)
                    .Range("E" & DerLigC + 1 + Ligne) = Replace(Cel.Offset(0, 2), "_", "") & "_" & Cel.Offset(0, 3) 'IS dep
                    .Range("F" & DerLigC + 1 + Ligne) = Cel.Offset(0, 4)
                    .Range("G" & DerLigC + 1 + Ligne) = Cel.Offset(0, 5)
                    .Range("H" & DerLigC + 1 + Ligne) = Cel.Offset(0, 6)
                    .Range("I" & DerLigC + 1 + Ligne) = Recollages(Ligne)
                Next Ligne
            End With
        Next Cel
    End Sub
    Cependant, je te conseille de faire attention à la structuration des données de lien_m2_tesson.
    La répartition est effectuée en fractionnant la chaine de caractères suivant le séparateur "/" et les éléments m_2 et tesson suivant le séparateur "_"
    La structure est censée suivre le schéma suivant : X_YY_ZZZ / X_YY_ZZZ / X_YY_ZZZ.
    Si tu ne respectes pas cette structure, tu risques de générer des erreurs de programme. De plus, tu ne pourras pas faire le lien direct entre tessons.
    Exemples d’anomalies :
    A la ligne 25, il est noté "S1_Rem" au lieu de "S_1_Rem" ;
    A la ligne 43, il est noté "E_11_1794//E_11_1940" (2 fois le séparateur "/") ;
    Idem à la ligne 74 ;
    A la ligne 84, il est noté "F_12/667" au lieu de " F_12_667" ;
    En fin de liste, certains n° de tesson ou m_2 ne sont pas renseignés.

    Cordialement
    Fichiers attachés Fichiers attachés

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 2
    Par défaut
    Merci, Merci,Merci, Merci,Merci, Merci,Merci, Merci,Merci, Merci,Merci, Merci,Merci, Merci,Merci, Merci
    Je vois pour réparer les erreurs...
    Merci encore

Discussions similaires

  1. [FPDF] Conversion PDF en ligne
    Par JeannotL dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 24/06/2007, 17h15
  2. Coloration cellule même ligne mais autre colonne
    Par lio33 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/05/2007, 11h21
  3. Réponses: 2
    Dernier message: 27/09/2006, 19h41
  4. [VB2005] conversion d'une ligne de code de C# > vers VB2005
    Par DonJR dans le forum Windows Forms
    Réponses: 2
    Dernier message: 26/07/2006, 23h08
  5. flexgrid:selection cellule=selection ligne
    Par Terminator dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 20/10/2005, 21h27

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