Copier des lignes d'un tableau mis en forme vers un autre
Markho
-
Le Pingou Messages postés 12646 Date d'inscription Statut Contributeur Dernière intervention -
Le Pingou Messages postés 12646 Date d'inscription Statut Contributeur Dernière intervention -
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
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:
- Copier des lignes d'un tableau mis en forme vers un autre
- Mise en forme tableau word - Guide
- Mise en forme conditionnelle excel - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
- Imprimer un tableau excel - Guide
5 réponses
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 !
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 !
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
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
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.
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.
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.
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.
Bonjour,
Je pense, pour arriver à comprendre, qu'il est souhaitable de mettre votre fichier sur https://www.cjoint.com/ et poster le lien.
Je pense, pour arriver à comprendre, qu'il est souhaitable de mettre votre fichier sur https://www.cjoint.com/ et poster le lien.
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
Voilà la macro intégrée à ton classeur Markho et cela fonctionne :
https://www.dropbox.com/s/mcgwkz14pb8sscu/markho_tableau-test.xlsm?dl=0
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
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.
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.
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
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
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.
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.
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