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 pour déplacer des cellules en fonction de leur mise en forme [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Acheteur Production
    Inscrit en
    Octobre 2010
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Octobre 2010
    Messages : 37
    Par défaut Macro pour déplacer des cellules en fonction de leur mise en forme
    Bonjour à tous,

    Je suis confronté à un soucis dans Excel.

    Après avoir copier/coller des données dans un tableau croisé dynamique, j'ai une liste avec des retraits de ce style :

    Fournisseur 1
    -----Famille 1
    ---------Sous famille 1
    --------------Article 1
    --------------Article 2
    -----Famille 2
    --------- Sous famille 2
    --------------Article 3
    --------------Article 4
    Fournisseur 2
    ...

    Et ce dans une même colonne. Le seul point différenciant est le retrait.

    Je souhaiterai avec une macro, obtenir plusieurs colonnes avec ces informations :

    Fournisseur 1 Famille 1 Sous famille 1 Article 1
    ------------------------------------------Article 2

    Fournisseur 2 Famille 2 Sous famille Article 3
    ------------------------------------------Article 4

    Le seul point différenciant est le retrait

    Quelqu'un peut-il m'aider ? avec ou sans macro

    Merci

    Grégory

  2. #2
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Bonjour gregory.d,

    Ce que tu appelles "retrait" ce sont des espaces ?

    Cordialement,
    Kimy

  3. #3
    Membre averti
    Homme Profil pro
    Acheteur Production
    Inscrit en
    Octobre 2010
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Octobre 2010
    Messages : 37
    Par défaut
    Bonjour et merci pour ta réponse

    Il s'agit d'un retrait au sens excel, voici l'icone :

    Nom : Capture.PNG
Affichages : 369
Taille : 23,2 Ko

    Merci

    Grégory

  4. #4
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    gregory.d,

    La propriété VBA Range.IndentLevel te permet de récupérer le nombre d'indentation d'une cellule.
    Ainsi, il est facilement faisable de placer la valeur, ainsi indentée, dans une autre colonne en checkant le nombre d’indentations.
    Exemple :
    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
    Option Explicit
     
    Sub LvlindentToColumn()
    Dim oRng As Range
    Dim i As Integer
     
    With Worksheets("Feuil1")
        Set oRng = .Range("A1")
        For i = 0 To .Cells(.Rows.Count, 1).End(xlUp).Row - 1
            With oRng.Offset(i, 0)
                If .IndentLevel <> 0 Then
                    oRng.Offset(i, .IndentLevel).Value = .Value
                    .IndentLevel = 0
                    .Value = ""
                End If
            End With
        Next i
    End With
     
    End Sub
    En revanche, pour ce qu'il s'agit du formalisme que tu souhaites il est nécessaire de réaliser un code bien plus spécifique.

    Dans l'attente de ton retour.
    Cordialement,
    Kimy

  5. #5
    Membre averti
    Homme Profil pro
    Acheteur Production
    Inscrit en
    Octobre 2010
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Octobre 2010
    Messages : 37
    Par défaut
    Merci pour ton aide

    J'ai personnalisé le code à mon classeur.

    Résultat : il me supprimer toute les information sauf le premier niveau d’indentation, il me conserve selon le descriptif ci dessous fournisseur 1 et fournisseur 2

    Fournisseur 1
    -----Famille 1
    ---------Sous famille 1
    --------------Article 1
    --------------Article 2
    -----Famille 2
    --------- Sous famille 2
    --------------Article 3
    --------------Article 4
    Fournisseur 2

    Quels sont les éléments à changer pour la 2e puis 3e indentation ?

    Merci

    Grégory

  6. #6
    Membre averti
    Homme Profil pro
    Acheteur Production
    Inscrit en
    Octobre 2010
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Octobre 2010
    Messages : 37
    Par défaut
    Cela fonctionne super bien ne pas tenir compte de mon message précédent

    Merci à toi

    Je clôture le post

    Bien cordialement

    Grégory

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

Discussions similaires

  1. [XL-2010] Macro pour colorer une cellule en fonction d'autres
    Par Fennec51 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/08/2014, 08h17
  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. Réponses: 7
    Dernier message: 22/03/2011, 18h00
  4. [XL-2003] macro pour remplir une cellule en fonction d'une autre
    Par kamilane dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 27/07/2010, 15h40
  5. macro pour selectionner des cellules
    Par Daniela dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 17/02/2009, 08h27

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