VBA excel acceder à un tableau collé
Résolu
ori05
Messages postés
57
Statut
Membre
-
ori05 Messages postés 57 Statut Membre -
ori05 Messages postés 57 Statut Membre -
Bonjour, j'ai plusieurs tableaux dans une feuille excel(feuille3) chaque tableau correspondant à une technologie particulière et chaque tableau contient le materiel A avec ses caractéristiques, le matériel B avec ses caractéristiques.... Dans une autre feuille excel (feuille2) j'ai un menu déroulant ou l'utilisateur choisit la technologie souhaité il appuie ensuite sur un bouton valider qui lance une macro permettant de :
- selectionner le tableau correspondant dans le feuille3
- dupliquer dans ce tableau (de la feuille3) le nombre de matériel A,B que l'utilisateur souhaite (nombre entré dans une autre feuille).
- de copier ce tableau (une fois les duplications effectuées) dans la feuille2.
Le problème est que si l'utilisateur relance la macro (si il souhaite changer de technologie) le tableau qui est collé ne va pas écraser le précedent. Et le problème c'est que je suis obligée de faire un "insérer les cellules copiées " car dans ma feuille2, la où je colle mon tableau, en dessous j'ai plein d'autre tableau....
Donc il faudrait que je puisse supprimer le tableau précédent avant de pouvoir le coller. Mais le problème c'est que je peux pas connaître la taille de mon tableau qui est complètement alléatoire. De plus mon tableau d'origine (avant qu'il ne soit collé dans la feuille2) à un nom (que j'ai défini dans la zone nom) mais une fois collé dans la feuille2 il n'a plus de nom... Donc je ne peux pas y avoir accès....
Bref la je suis bloquée... En gros il faudrait que je trouve un moyen d'accéder à ce tableau collé.
Je ne suis pas sure que mes explications soient très claires... Mais pourriez vous m'aider si quelqu'un à une idée....
Merci beaucoup
- selectionner le tableau correspondant dans le feuille3
- dupliquer dans ce tableau (de la feuille3) le nombre de matériel A,B que l'utilisateur souhaite (nombre entré dans une autre feuille).
- de copier ce tableau (une fois les duplications effectuées) dans la feuille2.
Le problème est que si l'utilisateur relance la macro (si il souhaite changer de technologie) le tableau qui est collé ne va pas écraser le précedent. Et le problème c'est que je suis obligée de faire un "insérer les cellules copiées " car dans ma feuille2, la où je colle mon tableau, en dessous j'ai plein d'autre tableau....
Donc il faudrait que je puisse supprimer le tableau précédent avant de pouvoir le coller. Mais le problème c'est que je peux pas connaître la taille de mon tableau qui est complètement alléatoire. De plus mon tableau d'origine (avant qu'il ne soit collé dans la feuille2) à un nom (que j'ai défini dans la zone nom) mais une fois collé dans la feuille2 il n'a plus de nom... Donc je ne peux pas y avoir accès....
Bref la je suis bloquée... En gros il faudrait que je trouve un moyen d'accéder à ce tableau collé.
Je ne suis pas sure que mes explications soient très claires... Mais pourriez vous m'aider si quelqu'un à une idée....
Merci beaucoup
A voir également:
- VBA excel acceder à un tableau collé
- Trier un tableau excel - Guide
- Tableau word - Guide
- Imprimer un tableau excel - Guide
- Tableau ascii - Guide
- Liste déroulante excel - Guide
9 réponses
Salut,
Peux tu nous joindre ici ton classeur, ou alors être davantage précis : ou se colle exactement ton tableau la 1ère fois que tu le copies/colles?
Peux tu nous joindre ici ton classeur, ou alors être davantage précis : ou se colle exactement ton tableau la 1ère fois que tu le copies/colles?
Mon tableau ne se copie colle qu'une seule fois et il se colle dans la feuille2.
Le tableau d'origine se situe dans la feuille3.
Merci :-)
Le tableau d'origine se situe dans la feuille3.
Merci :-)
Il se colle à un endroit précis de ma feuille la cellule A16 par exemple, j'ai nommé cette cellule et dans mon code je dis de coller à cet endroit....
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Donc avant de copier/coller un nouveau tableau, il faut supprimer celui qui l'a été auparavant.
Comme on ne connais pas la taille de ce tableau, il faut en déterminer la dernière ligne et la dernière colonne. Y a t'il d'autres lignes non vides sous ce tableau et d'autres colonnes non vides à la droite de ce tableau?
Comme on ne connais pas la taille de ce tableau, il faut en déterminer la dernière ligne et la dernière colonne. Y a t'il d'autres lignes non vides sous ce tableau et d'autres colonnes non vides à la droite de ce tableau?
Alors j'ai "bricolé", je dis bien bricolé car ça n'a rien de conventionnel, ce code. essaye le en l'adaptant.
Il faut l'ajouter juste avant de faire ton copier coller (la 2ème fois). Attention à bien sauvegarder AVANT de faire les manipulations. Après il sera trop tard!!!!!
Le code :
Dim derlign As String, dercol As String
Sheets("Feuil2").Select
ActiveSheet.Range("A16").Select
derlign = 0
Do While ActiveCell <> ""
ActiveCell.Offset(1, 0).Select
derlign = derlign + 1
Loop
ActiveSheet.Range("A16").Select
dercol = 0
Do While ActiveCell <> ""
ActiveCell.Offset(0, 1).Select
dercol = dercol + 1
Loop
ActiveSheet.Range("A16").Select
derlign = derlign - 1
dercol = dercol - 1
ActiveSheet.Range("A16").Offset(derlign, dercol).Select
ActiveCell.Name = "toto"
ActiveSheet.Range("A16:toto").Select
Selection.Delete
ActiveWorkbook.Names("toto").Delete
Cordialement
Il faut l'ajouter juste avant de faire ton copier coller (la 2ème fois). Attention à bien sauvegarder AVANT de faire les manipulations. Après il sera trop tard!!!!!
Le code :
Dim derlign As String, dercol As String
Sheets("Feuil2").Select
ActiveSheet.Range("A16").Select
derlign = 0
Do While ActiveCell <> ""
ActiveCell.Offset(1, 0).Select
derlign = derlign + 1
Loop
ActiveSheet.Range("A16").Select
dercol = 0
Do While ActiveCell <> ""
ActiveCell.Offset(0, 1).Select
dercol = dercol + 1
Loop
ActiveSheet.Range("A16").Select
derlign = derlign - 1
dercol = dercol - 1
ActiveSheet.Range("A16").Offset(derlign, dercol).Select
ActiveCell.Name = "toto"
ActiveSheet.Range("A16:toto").Select
Selection.Delete
ActiveWorkbook.Names("toto").Delete
Cordialement