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 :

Remplissage automatique d'un tableau [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut Remplissage automatique d'un tableau
    Bonjour à tous,

    Dans un fichier j'ai 2 feuilles de calcul. La première est nommée "Général" et la 2ème "Détail".
    Dans la cellule A2 de détail je tape "P" ou "C" ou toute autre lettre dont j'aurai besoin.
    Cette lettre correspond à une donnée saisie dans la feuille "Général" dans la colonne "G".
    A partir de là, je souhaiterai que les informations qui sont sur la même ligne de la feuille "Général" soient rapatriées à partir de la colonne A de la feuille "Détail" et cela à chaque fois que l'on trouve "P" dans la colonne "G".
    Les cinqs premières colonnes de la feuille "Général" correspondent aux cinqs premières colonnes de "Détail" (A pour A, B pour B, etc.). La colonne I de Général doit être en G de Détail, J dans H, L dans J et M dans K.
    Si il y a 10 fois "P" dans la colonne "G", alors se créent 10 lignes dans la feuille "Détail".
    J'espère avoir été clair sinon n'hésitez pas à me le dire.
    J'ai cherché une formule Excel mais sans succés, donc je me rabat sur Vba.
    Merci par avance pour votre aide

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Si tu as des entêtes de ligne, utilise un filtrage
    ci joint proposition à mettre dans Change de feuille Détail
    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim LastLig As Long, NewLig As Long, Nb As Long
    If Target.Address = "$A$2" Then
       If Target <> "" Then
          With Sheets("Général")
             LastLig = .Cells(Rows.Count, "G").End(xlUp).Row
             With .Range("A1:M" & LastLig)
                .AutoFilter
                .AutoFilter field:=7, Criteria1:=Target
             End With
             Nb = .Range("A1:A" & LastLig).SpecialCells(xlCellTypeVisible).Count - 1
             If Nb > 0 Then
                NewLig = Cells(Rows.Count, "A").End(xlUp).Row + 1
                Range("A" & NewLig & ":E" & NewLig + Nb - 1).Value = .Range("A2:E" & LastLig).SpecialCells(xlCellTypeVisible).Value
                Range("G" & NewLig & ":H" & NewLig + Nb - 1).Value = .Range("I2:J" & LastLig).SpecialCells(xlCellTypeVisible).Value
                Range("J" & NewLig & ":K" & NewLig + Nb - 1).Value = .Range("L2:M" & LastLig).SpecialCells(xlCellTypeVisible).Value
             End If
             .Range("A1").AutoFilter
          End With
       End If
    End If
    End Sub

  3. #3
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Bonjour mercatog et merci ton code est exactement ce que je voulais faire.
    Cependant, lorsque qu'il n'y a plus de lettre en A2 les données ne s'effacent pas.
    Il est vrai que je ne l'ai pas précisé dans ma demande.
    Comment dois-je procéder ?
    Merci par avance

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    C'est à dire?
    quand A2 est vide, ta feuille détail doit se vider?

  5. #5
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Oui c'est ça. Lorsque j'efface le "P" en A2, le tableau se vide.
    Tout simplement si je tape une autre lettre que "P", il ne faut que les données suivantes s'affichent en plus mais les remplacent.

    Si je ne suis pas clair dis le moi

    J'ai fais ce code avec l'éditeur de macro, mais vous en conviendrez ce n'est pas joli.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        Range("A2").Select
    'je supprime le contenu de A2
        Selection.ClearContents
    'je sélectionne une série de cellule et je les efface
        Range("A4:H300").Select
        Selection.ClearContents
        Range("J4:K300").Select
        Selection.ClearContents
    ' je me positionne en A3
        Range("A3").Select

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Il fallait le dire dès le départ, nulle part! vu ton nombre de participations, je crois qu'il faut changer de méthode. au stade de nettoyer l'enregistreur de macro devrait être déjà franchi; mais bon!
    ci-joint
    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim LastLig As Long, NewLig As Long, Nb As Long
    If Target.Address = "$A$2" Then
       Rows(3 & ":" & Rows.Count).ClearContents
       If Target <> "" Then
          With Sheets("Général")
             LastLig = .Cells(Rows.Count, "G").End(xlUp).Row
             With .Range("A1:M" & LastLig)
                .AutoFilter
                .AutoFilter field:=7, Criteria1:=Target
             End With
             Nb = .Range("A1:A" & LastLig).SpecialCells(xlCellTypeVisible).Count - 1
             If Nb > 0 Then
                Range("A3:E" & Nb + 2).Value = .Range("A2:E" & LastLig).SpecialCells(xlCellTypeVisible).Value
                Range("G3:H" & Nb + 2).Value = .Range("I2:J" & LastLig).SpecialCells(xlCellTypeVisible).Value
                Range("J3:K" & Nb + 2).Value = .Range("L2:M" & LastLig).SpecialCells(xlCellTypeVisible).Value
             End If
             .Range("A1").AutoFilter
          End With
       End If
    End If
    End Sub

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

Discussions similaires

  1. [XL-2007] Remplissage automatique d'un tableau
    Par scoubi10 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/07/2013, 15h41
  2. Remplissage automatique de valeurs dans un tableau
    Par julien_julio dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/04/2010, 15h52
  3. Réponses: 2
    Dernier message: 20/06/2009, 18h46
  4. Réponses: 7
    Dernier message: 08/05/2009, 13h56
  5. [VBA-E] Form Excel VB, remplissage automatique d'un tableau
    Par evema dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/04/2007, 14h37

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