Ajout tableau depuis macro

  • Initiateur de la discussion Initiateur de la discussion michel2A
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

michel2A

XLDnaute Nouveau
Bonjour,

Plutôt qu'un long discours je vous joins mon fichier afin que mon explication ne soit pas trop incompréhensible.
Regarde la pièce jointe LentillesTest(1).xlsx

Je souhaiterais depuis le bouton présent dans la feuil1 ajouter le tableau de la feuil2 dans la feuil1 à la suite du premier et décaler en même temps le bouton.

Le bouton est une affaire qui roule en utilisant :
Code:
 ActiveSheet.Shapes("Button 1").IncrementLeft 240
    ActiveSheet.Shapes("Button 1").IncrementTop -1

En revanche lorsque je colle le tableau de la feuil2 dans la feuil1 il sélectionne la cellule G1 et le colle. OK jusque la seulement les clics suivant décalent le bouton mais colle le tableau par dessus l'ancien. Cela vient du fait que je ne fais que lui demander de coller en G1. Pour remédier à cela il faudrait que je détecte la première cellule de la première ligne qui soit vide. J'ai eu comme idée d'utiliser cela :
Code:
Range("A1").End(xlToRight).Column
Seulement je ne fais que sortir le nombre de colonne (et comme j'ai des cellules fusionnées les résultats sont en plus faux ...)

Plusieurs questions :
1. Comment détecter la coordonnée de la première cellule vide de la première ligne ?
2. Comment faire pour que mon tableau en feuil2 ne soit pas figé ? (pour le moment il comporte 6 colonnes mais je peux très bien en rajouter une plus tard donc il faudrait que le programme ne se contente pas de sélectionner une plage prédéfinie mais bien des cellules actives)
3. Semi-Question/précision : le tableau que je copie contient des formules qui dépendent ensuite du tableau précédent ...

Des idées 😕

Merci d'avance
 
Re : Ajout tableau depuis macro

Bonjour Michel et bienvenu, bonjour le forum,

Essaie comme ça :
Code:
Sub Macro1()
Dim O As Object 'déclare la variable O (Onglet)
Dim PCV As Integer 'déclare la variable PCV (Première Colonne Vide)

Set O = Sheets("Feuil1") 'définit l'onglet O
PCV = O.Cells(2, Application.Columns.Count).End(xlToLeft).Column + 1 'définit la première colonne vide de la ligne 2
Sheets("Feuil2").Range("A1").CurrentRegion.Copy O.Cells(1, PCV) 'copie le tableau de l'onglet Feuil2
PCV = O.Cells(2, Application.Columns.Count).End(xlToLeft).Column + 1 'définit la première colonne vide de la ligne 2
ActiveSheet.Shapes.Range(Array("Button 1")).Select 'sélectionne le bouton
Selection.Left = O.Cells(1, PCV).Left 'déplace le bouton
O.Cells(1, PCV).Offset(0, -1).Select 'sélectionne la cellule première cellule du tableau copié
End Sub
 
Re : Ajout tableau depuis macro

parfait ca marche ! si je veux pouvoir ajouter une fenetre surgissante au clic sur le bouton permettant de choisir le nom du tableau à inserer (donc première cellule de la feuil2) je peux utiliser
Code:
InputBox("Texte ?", "Titre", "Valeur par défaut")
?
 
Re : Ajout tableau depuis macro

Bonjour Michel, bonjour le forum,

J'ai bien aimé la Fenêtre surgissante... Mais une InputBox ou une boîte d'entrée me semble le terme plus approprié.
Sinon, je n'ai pas compris ta demande... Ou plutôt je n'ai pas compris où tu voulais en venir...
 
Re : Ajout tableau depuis macro

En gros le bouton d'ajout de tableau renvoie à la macro mais je voudrais qu'en cliquant sur ce bouton une fenêtre vienne avant l'insertion du nouveau tableau, demander à l'utilisateur le nom du tableau qui s'ajoutera, cela modifie le contenu de la cellule fusionnée de la feuil2 qui ensuite sera copié avec le bon nom dans la feuil1.
 
Re : Ajout tableau depuis macro

Bonjour Michel, bonjour le forum,

Ok, j'ai compris (enfin !). Essaie comme ça :

Code:
Sub Macro1()
Dim BE As String 'déclare la variable BE(Boîte d'Entrée)
Dim O As Object 'déclare la variable O (Onglet)
Dim PCV As Integer 'déclare la variable PCV (Première Colonne Vide)

BE = InputBox("Texte ?", "Titre du Tableau", "Contrôle ") 'définit la boîte d'entrée BE
If BE = "" Then Exit Sub 'si bouton annuler ou non renseignée, sort de la procédure
Set O = Sheets("Feuil1") 'définit l'onglet O
PCV = O.Cells(2, Application.Columns.Count).End(xlToLeft).Column + 1 'définit la première colonne vide de la ligne 2
Sheets("Feuil2").Range("A1").CurrentRegion.Copy O.Cells(1, PCV) 'copie le tableau de l'onglet Feuil2
PCV = O.Cells(2, Application.Columns.Count).End(xlToLeft).Column + 1 'définit la première colonne vide de la ligne 2
ActiveSheet.Shapes.Range(Array("Button 1")).Select 'sélectionne le bouton
Selection.Left = O.Cells(1, PCV).Left 'déplace le bouton
O.Cells(1, PCV).Offset(0, -1).Select 'sélectionne la cellule première cellule du tableau copié
ActiveCell.Value = BE 'renvoie le texte dans la première cellule du tableau copié
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
145
Réponses
4
Affichages
590
Retour