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

Excel Discussion :

Créer un tableau a partir d'un autre sous condition


Sujet :

Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 42
    Points : 30
    Points
    30
    Par défaut Créer un tableau a partir d'un autre sous condition
    Bonjour et merci d'avance.
    Soit un tableau
    a . b . c
    1 . 2 . 2
    0 . 3 . 3
    1 . 4 . 4
    J'aimerai pouvoir créer un nouveau tableau, basé sur le premier, mais ne reprenant QUE les lignes où la valeur de la colonne a est 1:
    a . b . c
    1 . 2 . 2
    1 . 4 . 4
    
    Je sais que la fonction DECALER existe, mais j'avoue ne pas comprendre sa syntaxe.

    Encore merci d'avance.

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    Par macro...
    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
    Sub toto()
    With Sheets("lenomdetafeuille")
    ligne = 1 'ligne ou commence ton tableau, où sont affichés les a b c
    colonne = 2 'colonne contenant le A
    derncol = .Cells(ligne, Columns.Count).End(xlToLeft).Column
    .Range(.Cells(ligne, colonne), .Cells(ligne, derncol)).Copy Sheets("Lenomdelafeuilleoutuveuxtontabl").Range("A1")
    k = 2
    For i = ligne + 1 To .Cells(Rows.Count, colonne).End(xlUp).Row
    If .Cells(i, colonne) = 1 Then
    .Range(.Cells(i, colonne), .Cells(i, derncol)).Copy Sheets("Lenomdelafeuilleoutuveuxtontabl").Cells(k, 1)
    k = k + 1
    End If
    Next i
    End With
    End Sub

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 42
    Points : 30
    Points
    30
    Par défaut Merci, mais
    Bien, merci pour ta réponse , mais je cherche plutôt une formule que du code ...
    Pas de solution qui me conviendrait ?

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 922
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si tu souhaites le faire avec des formules. SOMMEPROD répondra à ton attente et si tu veux faire une exportation l'outil filtre avancé est une solution.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 42
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    Si tu souhaites le faire avec des formules. SOMMEPROD répondra à ton attente et si tu veux faire une exportation l'outil filtre avancé est une solution.
    Là, avec SOMMEPROD je ne vois pas ?
    Pourrais-tu me donner la formule qui correspondrait à mon attente ?

    NB: Je ne peux pas toucher au tableau de base.

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 922
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    J'avais mal lu la question.
    On peut en effet résoudre ce problème avec notamment la formule DECALER mais pas seulement.
    Voici une solution mais il y en a d'autres qui nécessite une colonne (que l'on cachera par la suite) qui servira de calcul.
    Imaginons que la plage contenant les données décrites plus haut soit sur une feuille nommées [Tableau] en plage A1:C4 (bien entendu, il pourrait y avoir plus de ligne. et le deuxième tableau qui servira à la consultation sélective se trouvera sur une feuille nommée [Consultation] en plage A1:C5 mais là également on pourra avoir plusieurs lignes.
    Les deux tableaux seront nommés (voir plus bas)
    La référence cherchée (1 ou 0 pour notre exemple) sera en cellule F1 et sera nommée Ref_Cherchée

    Les plages nommées
    dbList_Ref..........'=Tableau!$A$2:$A$4
    dbList...................'=Tableau!$A$2:$C$4
    dbConsult..........'=Consultation!$A$2:$B$11
    Ref_Cherchée...'=Consultation!$F$1

    Organisation
    La plage A1 se trouvant au-dessus du tableau dbConsult contiendra la valeur 0
    La colonne A peut être cachée

    Les formules (toutes sur la feuille [Consultation])
    En cellule A3 et suivantes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(LIGNE()-LIGNE(dbConsult)<=NB.SI(dbList_Ref;Ref_Cherchée);EQUIV(Ref_Cherchée;DECALER(Tableau!$A$2;A2;0;LIGNES(dbList));0)+A2;0)
    En cellule B3 et suivantes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI($A3;INDEX(dbList;$A3;2);"")
    En cellule C3 et suivantes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI($A3;INDEX(dbList;$A3;3);"")

  7. #7
    Membre régulier
    Profil pro
    controleur de gestion
    Inscrit en
    Décembre 2010
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : controleur de gestion

    Informations forums :
    Inscription : Décembre 2010
    Messages : 84
    Points : 112
    Points
    112
    Par défaut
    Salut tchantches007

    Vraimenent je n'arripa pas a comprendre pourquoi tu ne veux pas utiliser le filtre ?? plus simple et plus pratique biensur

    Cordialement

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 42
    Points : 30
    Points
    30
    Par défaut Ca marche pas ...
    Tout d'abord:
    Merci Barmaki pour ton intervention, MAIS : j'ai en réalité à compiler divers tableau provenant de diverses feuilles auxquelles je ne peut toucher et donc pas possible d'effectuer un filtrage. Comme je dois effectuer ces opérations régulièrement, je cherche une automation des opérations.

    @ M. Tulliez :
    Merci pour cette réponse, mais il y a un bug, j'ai une référence circulaire dans la formule à mettre dans la feuille consultation, la première ...
    Comme je l'ai dit, je n'arrive pas à maitriser la syntaxe de cette "F***e" formule DECALER ... Donc, Help

    Je précise Office/Excel 2010 sous windows 7

  9. #9
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 922
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je fais toujours un test avant de publier mes réponses et je n'ai pas eu d'erreur mais en écrivant ces lignes, je me suis rendu compte que dans mon explication et en retranscrivant je me suis trompé d'une ligne ce n'est pas A2, B2 et C2 mais A3, B3 et C3.
    Je corrige immédiatement (en rouge) dans mon intervention.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 42
    Points : 30
    Points
    30
    Par défaut
    Bonjour et merci encore pour votre aide précieuse.
    Il me reste un bug.
    Effectivement cela fonctionne mieux, mais pas complètement. en effet, j'ai étendu le nombre de ligne et voici ce que j'obtient:
    1	a	a
    2	b	b
    4	d	d
    6	f	f
    8	h	h
    9	i	i
    10	j	j
    11	k	k
    #N/A	#N/A	#N/A
    #N/A	#N/A	#N/A
    0		
    0		
    
    Or, les lignes
    4  d  d
    6  f  f
    8  h  h
    
    ne devraient pas être visible puisque la valeur recherchée ne correspond pas et celles qui sont entre devraient elles l'être (visible).
    d'autre part, la valeur #NA, due sans doute à la fin du tableau de base me gênent ...
    De plus, la dernière ligne est systématiquement "#NA".

    Désolé d'abuser de votre temps ...
    Je joint mon fichier test pour "servir et valoir ce que de droit"
    JF
    Fichiers attachés Fichiers attachés

  11. #11
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 922
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Deux erreurs dans ton classeur
    1) Dans la formule DECALER tu fais référence à A2 et c'est A1 comme cellule de référence à partir de laquelle le décalage doit avoir lieu. En effet, tu as remonté le tableau des données (dbList) d'une ligne par rapport à mon exemple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(LIGNE()-LIGNE(dbConsult)<=NB.SI(dbList_Ref;Ref_Cherchée);EQUIV(Ref_Cherchée;DECALER(Tableau!$A$1;A2;0;LIGNES(dbList));0)+A2;0)
    2) La plage nommée dbConsult est mal référencée. Elle doit commencer à A2 et pas A3 et en A2 il faut mettre la valeur 0

    Dans le gestionnaire des noms
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dbConsult=Consultation!$A$2:$B$18

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 42
    Points : 30
    Points
    30
    Par défaut Merci, encore et encore
    Ca MARCHE !!!
    Merci donc.

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

Discussions similaires

  1. cree tableau a partir de 2 autres tableaux de differents dimensions
    Par djilali22 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 15/10/2007, 12h29
  2. Réponses: 7
    Dernier message: 05/06/2007, 10h12
  3. [VB6]créer une textebox a partir d'une autre textbox
    Par shaka84 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 16/12/2006, 16h47
  4. Créer une table a partir d'une autre table/Vue
    Par TangoZoulou dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 09/11/2006, 10h45
  5. [FPDF] Créer un fichier PDF à partir d'un autre fichier PDF
    Par axel-erator dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 18/06/2006, 23h29

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