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 :

Création d'une macro pour compléter un tableau


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 6
    Par défaut Création d'une macro pour compléter un tableau
    Bonjour,

    je sollicite votre aide pour réaliser la macro suivante :
    Dans un tableau colonne A, j'ai 3 Noms : A, B et C
    Colonne B, J'ai une ou plusieurs activités affectées à chacun : a,b;c;d...
    A (en colonne A) >>> activité a (en colonne B)
    cellule vide (en colonne A) >>> activité b (en colonne B)
    cellule vide >>> activité c
    Ligne vide
    B >>> activité c
    cellule vide >>> activité a
    Ligne vide
    C >>> activité b
    Comment à partir d'une macro faire apparaitre le nom de chacun en face de l'activité (quand il n'apparait pas en colonne A) ?

    Merci pour votre aide
    (désolé pour cette formulation, je suis novice)

  2. #2
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonsoir Bingo, bonsoir le forum,

    Peut-être comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Macro1()
    Dim O As Object 'déclare la variable O (Onglet)
    Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
    Dim PL As Range 'déclare la variable PL (PLage)
    Dim CEL As Range 'déclare la variable CEL (CELlule)
     
    Set O = Sheets("Feuil1") 'définit l'onglet O
    DL = O.Cells(Application.Rows.Count, 2).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 2 (=B) de l'onglet O
    Set PL = Range("A1:A" & DL) 'définit la plage PL
    For Each CEL In PL 'boucle sur toutes les cellules CEL de la plage PL
        If CEL.Value = "" Then CEL.Value = CEL.Offset(-1, 0).Value 'si la cellule est vide, prend la valeur de la cellule au-dessus
    Next CEL 'prochaine cellule de la boucle
    End Sub

  3. #3
    Membre émérite Avatar de Nico Chg
    Homme Profil pro
    Apprenti ingénieur Business Development
    Inscrit en
    Juillet 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Apprenti ingénieur Business Development
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 352
    Par défaut
    Bonjour,

    Thautheme, ton code s'avère pas mal du tout, j'ai cependant une petite réserve (je dis ça de tête, arrête moi si je me trompe)

    Je n'ai pas pu tester, mais j'ai bien l'impression qu'il ne prend pas en compte les lignes vides, qu'il y a entre chacun des noms.

    Peut être qu'en modifiant légèrement ta boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each CEL In PL 'boucle sur toutes les cellules CEL de la plage PL
        If CEL.Value = "" And  CEL.Offset(0, 1).value <> "" Then CEL.Value = CEL.Offset(-1, 0).Value 'si la cellule en colonne A est vide et que celle en colonne B ne l'est pas, prend la valeur de la cellule au-dessus
    Next CEL 'prochaine cellule de la boucle
    Comme ceci ?

    Cordialement,
    Nico

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 6
    Par défaut Merci Thautheme et Nico
    1 Grand Merci à tous les 2 pour vos réponses, ça marche
    Vous êtes très forts !
    Bonne journée à vous

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Une autre façon parmi tant d'autres :
    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
     
    Sub Test()
     
        Dim Plage As Range
        Dim I As Long
        Dim Cel As Range
     
        With Worksheets("Feuil1")
     
               Set Plage = .Range(.Cells(1, 1), _
                            .Cells(.Cells.Find("*", .[A1], -4123, , _
                            1, 2).Row, .Cells.Find("*", .[A1], -4123, , _
                            2, 2).Column))
     
        End With
     
        For I = Plage.Columns(1).Cells.Count To 1 Step -1
     
            With Plage.Columns(1)
     
                If .Cells(I, 1).Value <> "" Then
     
                    .Cells(I, 1).AutoFill Range(.Cells(I, 1), .Cells(I, 1).Offset(2, 0))
     
                End If
     
            End With
     
        Next I
     
    End Sub
    Hervé.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 6
    Par défaut Merci Theze
    C'est un métier !
    Il va me falloir bosser pour arriver à tout ça...
    Merci Theze

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

Discussions similaires

  1. [OpenOffice][Texte] Création d'une macro pour redimensionner un tableau
    Par ram-0000 dans le forum OpenOffice & LibreOffice
    Réponses: 4
    Dernier message: 27/05/2015, 11h50
  2. Réponses: 2
    Dernier message: 24/04/2012, 13h22
  3. Création d'une macro pour générer un xml depuis excel
    Par vieri dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/12/2011, 09h46
  4. [XL-2003] création d'une macro pour formulaire
    Par Amadeon dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/05/2010, 12h56
  5. Création d'une macro pour remplissage auto
    Par Laura-c dans le forum Macros et VBA Excel
    Réponses: 25
    Dernier message: 19/06/2008, 16h40

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