Copier des lignes d'un tableau mis en forme vers un autre

Fermé
Markho - 17 août 2015 à 11:30
Le Pingou Messages postés 12140 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 18 septembre 2024 - 21 août 2015 à 18:13
Bonjour,
Merci de prendre de votre temps pour lire cette question. Je n'ai pas trouvé de sujet similaire, c'est pourquoi je poste aujourd'hui.
Je tente de copier/coller une ou plusieurs lignes d'un tableau mis en forme vers un autre tableau mis en forme. Précision : les 2 tableaux se trouvent sur 2 onglets différents d'un même classeur et sont formatés de la même façon et contiennent les même formules. le 1er me sert à préparer les données en attente, et le 2ème à présenter les données validées. Avant que je ne procède à la mise en forme des 2 tableaux, cela fonctionnait, mais la mise en forme m'a permis de résoudre d'autres problèmes.
1er pb rencontré : le tableau de destination ne reconnaît pas les lignes collées comme des nouvelles données. Pas de "mise en forme automatique" et aucun calcul lié à ce tableau ne tient compte des nouvelles lignes. Tableau croisé dynamique entre autre.
2ème pb : pour les cellules à texte, ça va, mais pour celles contenant des formules, ça va moins bien.
Tentative d'explication par l'exemple.
La cellule du tableau de départ contient : "=DATEDIF([@Entrée];[@[Fin de contrat]];"d")/365*12". Après collage dans le tableau de destination, elle devient "=DATEDIF(Tableau3[@Entrée];Tableau3[@[Fin de contrat]];"d")/365*12" Du coup, plus rien ne fonctionne correctement, car toutes les cellules de la même colonne du tableau de destination ont été modifiées avec l'indication supplémentaire "tableau3", le nom du tableau de départ.
Peut-on effectuer un collage "spécial" qui omettrait le nom du tableau de départ ? Tout en sachant que je copie/colle la ligne complète. Ou alors autrement, mais si c'est de la programmation, je ne suis pas très bon en ce domaine, même en macro. Mais je suis prêt à essayer.
Voilà.
En vous remerciant encore
Marc


A voir également:

5 réponses

Le Pingou Messages postés 12140 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 18 septembre 2024 1 446
18 août 2015 à 18:13
Bonjour,
Merci de la réponse. Cela devient incompréhensible, qu'avez-vous comme base de données au départ et qu'elle est le résultat à obtenir .... ?
Peut-être qu'un exemple permettrait de mieux comprendre !

1
Dans Excel, il existe la possibilité de "préformater" un tableau. En cliquant sur le bouton "mettre sous forme de tableau". Cela a la particularité de donner un nom au tableau, par exemple "tableau2", mais aussi d'automatiser le formatage de toutes les nouvelles lignes, et lorsque l'on saisi une formule dans ce tableau, au lieu d'avoir une référence comme "F2 ou H2" on peut avoir "[Entrée] ou [Fin de contrat]" qui représentent les entêtes de colonnes respectives.
Dans mon cas, sur 2 onglets d'un même classeur, j'ai 2 tableaux strictement identiques, nommés "tableau2" et "tableau3", en formatage et formules, mais pas en contenu bien sûr.
Dans le tableau2, je saisi des lignes de données en attente de validation.
Mon mode opératoire actuel :
Dès que les données saisies en ligne2 sont validées, je sélectionne cette ligne, "copier", je me rends sur le tableau3, je sélectionne la ligne sous la dernière ligne saisie. Puis je fais "coller", de façon à avoir l'ensemble des données et formules. Puis je supprime la ligne concernée du tableau2.
Le résultat du "collage" :
a) La nouvelle ligne "saisie" par collage, n'est pas reconnue par le tableau3. c'est à dire que si je sélectionne "tableau3" en haut à gauche dans la "zonenom", cette ligne n'en fait pas partie.
b) la formule contenue en J2 du tableau2 "=DATEDIF([Entrée];[Fin de contrat];"d")/365*12" (calcul d'ancienneté) est devenue en J de la nouvelle ligne "=DATEDIF(Tableau2[Entrée];Tableau2[Début contrat];"d")/365*12" Excel à rajouté la référence au "tableau2", ce dont je ne veut pas bien sûr.
Voilà, j'espère avoir été plus clair, car ce n'est pas très évident à expliquer simplement.
Merci beaucoup
0
Le Pingou Messages postés 12140 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 18 septembre 2024 1 446
17 août 2015 à 18:01
Bonjour,
Il semble que le deuxième tableau doit avoir les valeurs et non pas les formules du premier....est-ce bien ce que vous voulez...?
Si Oui alors utiliser Copier et ensuite collage spécial et choisir Valeurs et formats des nombres
0
Bonjour et merci.
en fait, je désire effectuer un collage complet, hors format, les tableaux étant mis en forme automatiquement par Excel, et les formules sont importantes tant dans le tableau de départ que dans celui de destination.
0
Le Pingou Messages postés 12140 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 18 septembre 2024 1 446
19 août 2015 à 11:50
Bonjour,
Eh bien premier point : les formules dans votre tableau 3 doivent faire référence au tableau 3 et non pas au tableau 2 ... A corriger
Deuxième point : en principe on copie et colle que les valeurs entrées et pas les valeurs calculées avec les formules.

0
bonjour,
En fait, c'est Excel qui ajoute tout seul les références au tableau2 après copie dans le tableau3. A l'origine, dans le tableau2, il n'y a aucune référence, comme décrit dans mon exemple. Ensuite, pour la copie, j'ai besoin de recopier l'ensemble de la ligne. C'est à dire, données simples dans certaines cellules et formules dans d'autres cellules.
0
Le Pingou Messages postés 12140 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 18 septembre 2024 1 446
20 août 2015 à 10:13
Bonjour,
Je pense, pour arriver à comprendre, qu'il est souhaitable de mettre votre fichier sur https://www.cjoint.com/ et poster le lien.

0
Une copie partielle du fichier Excel concerné
http://www.cjoint.com/c/EHunv6hmGt7
0
Le Pingou Messages postés 12140 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 18 septembre 2024 1 446
20 août 2015 à 16:18
Bonjour...!
Merci pour le fichier et merci d'expliquer la différence entre les données sur le tableau 2 (feuille à valider] et le tableau 3 (feuille valider) ......... ?
Salutations.
Le Pingou
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 700
20 août 2015 à 19:10
Bonjour,

Voilà la macro intégrée à ton classeur Markho et cela fonctionne :

https://www.dropbox.com/s/mcgwkz14pb8sscu/markho_tableau-test.xlsm?dl=0
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 700 > gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020
20 août 2015 à 22:36
Bonsoir,
Petite précision, avec une macro le suffixe du classeur passe de .xlsx à .xlsm
0
Merci pour vos efforts envers un apprenti.
Ok pour tout cela, juste le pb que je ne vois pas comment récupérer le fichier.
j'ai cliqué sur le lien https://dropbox.../markho_tab...
j'arrive sur une page, mais comment récupérer le tout? fichier et macro ?
@+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 700
20 août 2015 à 14:31
Bonjour à tous,

je ne suis pas très bon en ce domaine, même en macro. Mais je suis prêt à essayer.
Vu ce que tu veux faire, c'est certainement la solution, aussi je te propose avec cette macro à mettre dans la feuille de ton "Tableau2" de transférer ta ligne du tableau2 au tableau3 en la supprimant sur un double clic dans la ligne à transférer de ton tableau. Un petit mode d'emploi
Option Explicit
Const tbc = "Tableau3"  ' nom tableau copié
Const tbo = "Tableau2"  ' nom tableau origine à copier
Private Sub Worksheet_BeforeDoubleClick(ByVal sel As Range, Cancel As Boolean)
Dim dbo As Integer, dbc As Integer, col As Integer, lig As Long, wsc As String, tbd
    If sel.ListObject Is Nothing Then Exit Sub
    If Not Intersect(sel, Range(tbo)) Is Nothing Then
        Cancel = True: wsc = ""
        For col = 1 To Sheets.Count         ' recherche nom feuille tableau copié
            For Each tbd In Sheets(col).ListObjects
                If tbd = tbc Then wsc = Sheets(col).Name  ' trouvé
            Next tbd
            If wsc <> "" Then Exit For
        Next col
        If col > Sheets.Count Then MsgBox "Pas de " & tbc: Exit Sub
        dbo = Range(tbo).Column
        dbc = Sheets(wsc).Range(tbc).Column - 1
        col = Range(tbo).Columns.Count      ' création nouvelle ligne
        tbd = ActiveSheet.Cells(sel.Row, dbo).Resize(1, col).Value
        lig = Sheets(wsc).Range(tbc).Rows.Count + 1
        Sheets(wsc).Range(tbc).ListObject.ListRows.Add lig
        lig = lig + Sheets(wsc).Range(tbc).Row - 1
        For col = 1 To UBound(tbd, 2)       ' copie rubriques sans formule
            If Left(ActiveSheet.Cells(sel.Row, col + dbo - 1).Formula, 1) <> "=" Then
                Sheets(wsc).Cells(lig, col + dbc).Value = tbd(1, col)
            End If
        Next col
        ActiveSheet.Rows(sel.Row).Delete
    End If
End Sub
0
Le Pingou Messages postés 12140 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 18 septembre 2024 1 446
20 août 2015 à 16:01
Bonjour,
Alors là, super merci, je vais de ce pas prendre le code pour moi et l'étudier.
Merci gbinforme, au passage je me suis fait supprimer mon Norton Internet Security hier par Windows 10 ...super content
Salutations.
Le Pingou
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 700 > Le Pingou Messages postés 12140 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 18 septembre 2024
20 août 2015 à 19:03
Bonsoir Le Pingou,

Ce code permet une petite introduction à la gestion des tableau >2007 qui ne se manipulent pas simplement et par exemple sous 2013 n'acceptent pas les copies de plage.
Pour Norton, quelques infos : attention c'est traduit ... à peu près !
Bonne soirée.
0
Le Pingou Messages postés 12140 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 18 septembre 2024 1 446
20 août 2015 à 22:14
Bonsoir gbinforme,
Merci infiniment pour votre proposition concernant Norton.
Entre temps, via mon compte Symantec, j'ai pris contact avec le support qui est toujours d'une rare efficacité et j'ai réinstallé mon logiciel y compris les correctifs en rapport avec Windows 10. Maintenant c'est tout OK.
Concernant votre procédure pour les 2 tableaux m'a permis de mieux comprendre le traitement des tableaux structurés d'Excel.
Par contre je ne saisis pas le pourquoi de ces 2 tableaux utilisés par Markho.
Salutations.
Le Pingou
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 700
20 août 2015 à 22:33
Bonsoir Le Pingou,

Il m'avait semblé effectivement qu'il y avait eu des correctifs windows 10, sans doute nécessaires, mais j'ai la très nette impression que cette version 10 ne fais les contrôles que petit à petit, d'où peut-être le délai ?

Le premier tableau sert à demander une validation et la validation obtenue est transférée sur le second en archive validée.
Je me suis aperçu que les noms des tableaux, même s'ils sont sauvegardés dans les noms, (qui sont inactifs) ne peuvent être accédés qu'après recherche de la feuille concernée. La macro gère la position du tableau qui peut être n'importe où sur la feuille car souvent les utilisateurs mettent des en-têtes lignes et/ou colonnes.
Bonne nuit.
0
Le Pingou Messages postés 12140 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 18 septembre 2024 1 446
20 août 2015 à 22:39
Merci, à une prochaine.
0