Macro qui alloge un tableau et le réduit aprés validation

Y compris Power BI, Power Query et toute autre question en lien avec Excel
K
Képaotop
Nouveau venu
Nouveau venu
Messages : 6
Inscrit le : 11 mars 2017
Version d'Excel : 2007 FR

Message par Képaotop » 11 mars 2017, 17:15

Bonjour

Je précise de suite que je suis "nul" en VBA mais souhaite apprendre
Dans le fichier ci joint je souhaite que le tableau s'allonge au fur et à mesure des saisies (ce qui n'est pas le cas) . Peut-être à cause de la validation de donnée en B13. Je ne comprends pas ce tableau devrait être dynamique!
D'autre part je souhaite que la macro ou le code recopie les données dans la feuille 2, mais la colonne C de feuille 1 devra être recopiée en colonne E et F . La donnée changera de place suivant l'option choisie dans la liste en E10 de feuille 1 qui n'est qu'un bête exemple

Mieux que du Bla bla je joins un fichier

Merci par avance pour votre aide
macro ou code 001.xlsm
(13.82 Kio) Téléchargé 10 fois
Avatar du membre
LouReeD
Contributeur
Contributeur
Messages : 6'667
Appréciations reçues : 322
Inscrit le : 14 octobre 2014
Version d'Excel : 2013 FR, 2016 FR
Contact :
Téléchargements : Mes applications

Message par LouReeD » 11 mars 2017, 20:07

Bonsoir,

juste une petite précision :

sur le fichier envoyé, chez moi ce n'est pas un tableau, créer par le menu insertion du ruban d'Excel, cela ressemble plus a une plage de donnée "filtrée".

Et ceci dit, si la première cellule à renseignée est à faire grâce à une liste de choix, cette liste ne sera pas accessible dans le tableau...
Donc à droite de votre tableau la "copie" en tableau "inséré" par Excel, mais sans ajout automatique sous l'intitulé car la liste de choix n'est pas accessible, la solution ? inscrire une donnée quelconque , la ligne se crée, et modifier la donnée quelconque avec la liste de choix. Mais ça ne marche pas !!!!

LA SOLUTION : créer un tableau avec une colonne date par exemple : Tableau du dessous LOUREED
une fois la date entrée, la ligne est ajoutée et vous pouvez sélectionner une valeur dans la liste de choix.

voir fichier joint :
macro ou code 001_LouReeD.xlsm
(15.44 Kio) Téléchargé 11 fois
@ bientôt

LouReeD
Quelques règles à lire ICI ;;)
______________________________________________________Vous pouvez allez faire un tour sur : Index de "Mes applications" ;;)
K
Képaotop
Nouveau venu
Nouveau venu
Messages : 6
Inscrit le : 11 mars 2017
Version d'Excel : 2007 FR

Message par Képaotop » 11 mars 2017, 21:04

Merci à vous
Merci d'avoir répondu, je vous donne mon avis demain sans faute, trop fatigué ce soir
Bonne soirée
Cordialement
Avatar du membre
LouReeD
Contributeur
Contributeur
Messages : 6'667
Appréciations reçues : 322
Inscrit le : 14 octobre 2014
Version d'Excel : 2013 FR, 2016 FR
Contact :
Téléchargements : Mes applications

Message par LouReeD » 11 mars 2017, 21:43

Et tout ce fonctionnement sans VBA, c'est géré par Excel... Elle est pas belle la vie ? ;-)

@ bientôt

LouReeD
Quelques règles à lire ICI ;;)
______________________________________________________Vous pouvez allez faire un tour sur : Index de "Mes applications" ;;)
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'171
Appréciations reçues : 446
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 12 mars 2017, 08:33

Bonjour, Salut LouReed !

Un petit essai à voir :
Sub InserLigne()
    ActiveSheet.Range("B13:E13").Insert xlShiftDown, xlFormatFromRightOrBelow
End Sub

Sub Valider()
    Dim tbv(), n%, h%, i%, k%
    With ActiveSheet
        n = .Cells(.Rows.Count, 2).End(xlUp).Row
        ReDim tbv(n - 13, 4)
        k = IIf(.Range("E10") = "Annuelle", 3, 4)
        For i = n To 13 Step -1
            tbv(h, 0) = .Cells(i, 2): tbv(h, 1) = .Cells(i, 4)
            tbv(h, 2) = .Range("C10"): tbv(h, k) = .Cells(i, 3)
            h = h + 1
        Next i
        If n > 13 Then .Range("B14:E" & n).Clear
        With .Range("B13:E13")
            .ClearContents
            .BorderAround xlContinuous, xlThin
        End With
    End With
    With [Tableau6]
        n = .Rows.Count + 1
        .Cells(n, 1).Resize(h, 5).Value = tbv
    End With
End Sub
J'ai apposé un x dans ton tableau Excel cible, pour que les lignes ajoutées s'y intègrent (ce qui ne serait pas le cas si la première et unique ligne est vide). Les lignes ajoutées se mettront à la suite. Une fois amorcée la première ligne restée vide peut être supprimée.
(Le problème n'intervenant qu'au démarrage, il n'était pas opportun de coder le traitement de ce cas qui ne se produit qu'une fois.)

Cordialement.
képaotop_macro ou code 001.xlsm
(25.03 Kio) Téléchargé 13 fois
Avatar du membre
Jean-Eric
Fanatique d'Excel
Fanatique d'Excel
Messages : 16'383
Appréciations reçues : 670
Inscrit le : 27 août 2012
Version d'Excel : 365 Personnel

Message par Jean-Eric » 12 mars 2017, 11:12

Bonjour,
Une proposition à étudier.
Cdlt.
xlp - Formulaire.xlsm
(41.32 Kio) Téléchargé 9 fois
Jean-Eric

Je ne réponds pas aux M.P. non sollicités.
K
Képaotop
Nouveau venu
Nouveau venu
Messages : 6
Inscrit le : 11 mars 2017
Version d'Excel : 2007 FR

Message par Képaotop » 12 mars 2017, 12:20

Bonjour Jean Eric, M Ferrand et Lou Reed et au passageles "autres"

Merci pour vos réponses qui fonctionnent...Parfait :?

reste que ne connaissant pas ce forum, j'ai coché la case "accepter cette réponse sans savoir exactement ce que ça avait comme incidence et j'ai vu les autres "passer au rouge" :oops:

Que personne ne se formalise je n'ai pas fait de choix, j'étudie . Ce n'est une mauvaise manip.... je respecte trop l'engagement de chacun pour éviter de blesser

Cordialement
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message