remplir et créer un deuxième tableau

gymgazelle

XLDnaute Nouveau
Bonjour,

J'ai fais une petite macro pour remplir un tableau de quatre colonne et 15 ligne environ grâce à un bouton, mais j'aimerais pouvoir un créer un autre si celui ci est plein.
 

job75

XLDnaute Barbatruc
Re,

Voyez le fichier joint et cette macro dans le code de la feuille (clic droit sur l'onglet et Visualiser le code) :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim T1 As Range, T2 As Range, c As Range
Set T1 = [Tableau1]: Set T2 = [Tableau2]
If Intersect(Target, Union(T1, T2)) Is Nothing Or Target.Count > 1 Then Exit Sub
If T1(1) = "" Then T1(1).Select: Exit Sub
Set c = T1.Find("", , xlValues)
If Not c Is Nothing Then c.Select: Exit Sub
If T2(1) = "" Then T2(1).Select: Exit Sub
Set c = T2.Find("", , xlValues)
If Not c Is Nothing Then c.Select
End Sub
A+
 

Pièces jointes

  • Tableaux(1).xlsm
    21.5 KB · Affichages: 21

job75

XLDnaute Barbatruc
Bonsoir gymgazelle,

C'est tout à fait votre droit de vous absenter mais quand vous revenez sur le fil la moindre des choses est de tester et d'essayer de comprendre la ou les solutions proposées.

Les tableaux de mon fichier sont quasiment identiques aux vôtres.

Je redépose mon fichier au format .xls au cas où vous ne pourriez pas ouvrir les .xlsm.

A+
 

Pièces jointes

  • Tableaux(1).xls
    74.5 KB · Affichages: 24

gymgazelle

XLDnaute Nouveau
Bonsoir,

Je suis d'accord mais sachant pas si je devais ou pas créer un bouton alors j'ai mis mon exemple.
Sinon, je dois l’inséré ou dans ma macro?
et on peut créer un deuxième tableau ou voir plus si on en a besoin avec une macro?
je vais mettre une rechercheV dans 2 colonnes et une mise en forme conditionnelle, ça peut les copier aussi quand le tableau sera créer?

Merci
@plus
;)
 

job75

XLDnaute Barbatruc
Bonjour gymgazelle, le forum,

La solution que j'ai donnée suppose que les données sont entrées manuellement dans les tableaux.

Mais en fait vous voulez transférer par macro les données de la 1ère feuille.

Alors utilisez cette macro, plus cohérente que la vôtre :
Code:
Sub Macro1()
Dim Source As Range, i As Byte, T As Range, h As Long
Set Source = [masj].Resize(, 4)
Application.ScreenUpdating = False
Source.Columns(4).Insert xlToRight 'insertion à cause des cellules fusionnées en Feuil2
For i = 1 To 2 '2 tableaux nommés
    Set T = Evaluate("Tableau" & i)
    T = Source.Offset(h).Resize(T.Rows.Count).Value 'copie les valeurs
    h = h + T.Rows.Count
Next
Source.Columns(4).Delete xlToLeft 'suppression de la colonne insérée
Sheets("Feuil2").PrintPreview 'pour tester
'Sheets("Feuil2").PrintOut 'imprime
MsgBox "Feuille imprimée"
End Sub
Fichier joint.

Bonne journée.
 

Pièces jointes

  • Classeur11 copie(1).xls
    86.5 KB · Affichages: 15

gymgazelle

XLDnaute Nouveau
Bonjour
J’essaye se soir sur un pc
Sinon, ça va coller toutes mes données où il faut que je complète la macro ?
Après la cellule fusionnée on peut l’enlever elle n’est pas obligatoire
Et je vous dit

Merci
 
Dernière édition:

gymgazelle

XLDnaute Nouveau
Salut,

Je viens d'essayer c'est super, mais dans la colonne désignation et deno, il faut rien coller dedans.
J'ai fait vite fais des modifications sur les tableaux et je t'ai mis un petit mot.

Merci pour ton aide
 

Pièces jointes

  • Classeur11 copie(1).xls
    50 KB · Affichages: 9

job75

XLDnaute Barbatruc
Re,
mais dans la colonne désignation et deno, il faut rien coller dedans.
Pourquoi ne l'avoir pas dit dès le début ?
Code:
Sub Macro1()
Dim Col1 As Range, Col2 As Range, i As Byte, T As Range, h As Long
Set Col1 = [masj] 'plage nommée
Set Col2 = [Psoir] 'plage nommée
Application.ScreenUpdating = False
With Feuil2 'CodeName de la feuille
    For i = 1 To 2 '2 tableaux nommés
        Set T = Evaluate("Tableau" & i)
        T.Columns(1) = Col1.Offset(h).Resize(T.Rows.Count).Value 'copie les valeurs
        T.Columns(4) = Col2.Offset(h).Resize(T.Rows.Count).Value 'copie les valeurs
        h = h + T.Rows.Count
        .PageSetup.PrintArea = T.EntireColumn.Address
        .PrintPreview 'pour tester
        '.PrintOut 'imprime
    Next
End With
Feuil1.Activate 'facultatif
End Sub
Fichier (2).

A+
 

Pièces jointes

  • Classeur11 copie(2).xls
    86.5 KB · Affichages: 13

gymgazelle

XLDnaute Nouveau
Salut,
j'ai essayé plusieurs fois, j'ai changé le texte en rouge. Pour qu'il puisse me prendre les bonnes données mais maintenant je n'arrive pas à coller le reste des données c'est à dire soir et psoir à la suite et si besoin dans un autre tableau.
J'ai bien essayé en faisant une copie de celle-ci et de modifier certains paramètre mais ça fonctionne pas mieux .
A chaque fois quasiment ça me met débogage.
Alors c'est quoi le soucis, je ne dois pas recopier. Il faut que je refasse une autre Macro?
Merci de l'aide


Sub Macro1()
Dim Col1 As Range, Col2 As Range, i As Byte, T As Range, h As Long
Set Col1 = [masj] 'plage nommée
Set Col2 = [Pj] 'plage nommée
Application.ScreenUpdating = False
With Feuil2 'CodeName de la feuille
For i = 1 To 2 '2 tableaux nommés
Set T = Evaluate("Tableau" & i)
T.Columns(1) = Col1.Offset(h).Resize(T.Rows.Count).Value 'copie les valeurs
T.Columns(4) = Col2.Offset(h).Resize(T.Rows.Count).Value 'copie les valeurs
h = h + T.Rows.Count
.PageSetup.PrintArea = T.EntireColumn.Address
.PrintPreview 'pour tester
'.PrintOut 'imprime
Next
End With
Feuil1.Activate 'facultatif
End Sub
 

gymgazelle

XLDnaute Nouveau
bonjour,

Il y a une macro qui colle seulement les colonnes nommées "masj"et"pj"

Maintenant, j'aimerai pouvoir coller la colonne "soir" dessous "masj" et faire de même pour "pj" et "psoir".
Même en essayant de copier celle ci ou en essayant de l'adapter ça me colle rien mes tableaux sont vides.
j'avais mis chercher première ligne vide en partant du bas. rien y fait.

Au secours, aidez-moi
 

Pièces jointes

  • Classeur11 copie(3).xls
    51 KB · Affichages: 14

Discussions similaires

  • Question
Microsoft 365 Excel365
Réponses
2
Affichages
184

Statistiques des forums

Discussions
312 195
Messages
2 086 078
Membres
103 111
dernier inscrit
Eric68350