Copier des cellules remplis dans un tableau

Bonsoir, je voudrais savoir si c'est possible d'avoir sur une autre feuille (Horaire Samedi) le tableau (Gestion) mais que les cellules remplis

AR4;AS4;AT4;AZ4

BB5;BC5;BD5;BE5;BF5;BG5

etc.

Ce deuxième tableau simplifie les yeux pour voir ce qu'il y a comme tableau exact.

Je vais voir pour mettre des mises en formes conventionnel pour mettre une couleur de fond sous chaque ligne. Je sais le faire. J'ai déjà expérimenter dans cette feuille.

Pour le moment, sur Horaire Samedi, j'ai fais un collage special pour avoir les mêmes cellule que Gestion.

Je veux à la place avoir juste les cellules avec du texte. Si possible de ne pas avoir de case vide.

En gros comme expliqué sur l'exemple du dessus.

Si une ligne est vide, si on peut aussi la supprimer sur le second tableau, c'est cool.

Merci de bien vouloir m'aider. Je suis preneur d'idée. Si possible sans macro.

Bon week-end.

Bonjour

Un essai à tester. Te convient-il ?

Bye !

Merci beaucoup pour le fichier.

Oui ca me convient déjà bien.

C'est possible d'avoir toutes les cellules sur la gauche?

Et c'est possible d'avoir la même chose pour dimanche? En gros, je retire des cellules dans horaire samedi et il en reste pour le dimanche.

Donc je veux copier aussi ce qu'il reste pour le dimanche.

Si j'ai déjà ça, je suis comblé. Si on peut récupérer dans la colonne O Horaire aussi le Nb de match /tour (Gestion AO), ce serait parfait.

Nicolas.

edit: j'ai rajouté Worksheets("Horaire Samedi").Range("O6:AD86").ClearContents à la macro pour effacer le tableau car s'il y a déjà du texte dans ces cases, le texte reprend après tout le texte.

edit2: dans horaire samedi, je n'ai pas les cases du MX affiché. J'ai bien les cases pour SH, SD,DD et DH.

cocolabombe0 a écrit :

C'est possible d'avoir toutes les cellules sur la gauche?

Comment cela ? Il me faudrait un exemple.

Et c'est possible d'avoir la même chose pour dimanche?

Le bouton qui lance la macro n'est-il pas sur la feuille des horaires du dimanche ?

En fait, il suffit de faire un copier (clic droit) du bouton et un coller sur la feuille désirée pour que la macro s'applique à la feuille sur laquelle se trouve ce bouton.

Donc je veux copier aussi ce qu'il reste pour le dimanche.

??? Avec un exemple, peut-être que je comprendrai...

dans horaire samedi, je n'ai pas les cases du MX affiché. J'ai bien les cases pour SH, SD,DD et DH.

Là, c'est nuit et brouillard

Bye !

L'exemple pour le samedi:

Toutes les cellules avec du texte se positionne sur la gauche du tableau dans Horaire Samedi

Pour dimanche, je veux copier le reste des cellules non mis sur le planning de samedi.

Dans l'exemple, j'ai placé déjà des cases dans le planning. Je veux récupérer que les cases restantes pour le samedi.

Pour le MX, la macro récupère les types de matchs mais il en manque une. Par exemple les lignes 8; 17 ne sont pas dans le tableau des horaire Samedi.

J'espère que je me suis mieux exprimé.

Désolé mais je ne comprends toujours pas.

Je passe la main.

Bye !

Le tableau dans Gestion regroupe tous les matchs que sera joué dans le week-end. Je dois les décomposé en plusieurs jours.

Alors je fais d'abord le planning du samedi puis du dimanche.

Je veux regrouper toutes les cases pleines dans le tableau Horaire Samedi (c'est ce qu'il fait mais j'aimerais les cellules soient mise bout à bout).

En gros comme cette demande qui est présent sur le forum mais sur les lignes au lieu des colonnes.

Une fois que j'ai mis les premières cases dans le planning (horaire samedi) (C7 à L39 max), il me restera des cases dans le tableau de droite que je veux recopier dans Horaire Dimanche.

Je veux les recopier pour le mettre pour le dimanche.

Je rajoute un exemple fini:

On peut voir qu'il y a des cases remplis dans le tableau de samedi et dimanche. Toutes les cases étaient écrit à droite de Samedi et j'ai déplacé les cases des matchs que je jouais le samedi. Il m'en restait dans le tableau de droite pour le dimanche et j'ai du les déplacer pour les mettre dans le dimanche.

Pour les matchs de double mixte, j'ai mis une image pour dire qu'il n'y avait pas de mixte répertorier.

J'espère que c'est mieux. Je sais que j'ai un peu de mal.

tableaux3

Bonjour, j'ai réussi à récupérer les ligne 8 (du mixte).

J'ai fais pleins d'essais et j'ai vu comment faire.

Sub RecupGestion()
Worksheets("Horaire Samedi").Range("O6:AD86").ClearContents
    Set fg = Sheets("Gestion")
    lgn = 6
    Application.ScreenUpdating = False
    For i = 4 To fg.Range("AP" & Rows.Count).End(xlUp).Row
        If i Mod 9 = 4 Or i Mod 9 = 5 Or i Mod 9 = 6 Or i Mod 9 = 7 Or i Mod 9 = 8 Then
            flag = 0
            For j = 44 To 59
                If fg.Cells(i, j).Value <> "" Then
                    flag = 1
                    Exit For
                End If
            Next j
            If flag = 1 Then
                fg.Range("AR" & i & ":BG" & i).Copy
                lgn = Application.Max(6, Range("O" & Rows.Count).End(xlUp)(2).Row)
                Range("O" & lgn).PasteSpecial xlPasteValues
            End If
       End If
    Next i
End Sub

J'ai rajouté Or i Mod 9 = 8 et la ligne est apparu.

Pour faire la copie de Samedi à Dimanche:

Sub RecupDimanche()
Sheets("Horaire Samedi").Range("O6:AD86").Copy Sheets("Horaire Dimanche").Range("O6")
End Sub

J'ai tout pour bien faire fonctionner mon fichier.

Le petit plus qu'il me manquerais est de réunir toutes les cases remplis le plus à gauche possible.

Bonsoir, je voulais toujours savoir si c'est possible de décaler les cellules vers la gauche. Je m'explique.

Je voudrais que sur chaque ligne de Horaire Samedi et Horaire Dimanche, les cellules remplit soit le plus à gauche.

En gros, sur la première ligne, je voudrais avoir SH N3/R4 T1 | SH N3/R4 T2 | SH N3/R4 T3 | SH N3/R4 finale | | | | | | etc.

Ce qui signifie que toutes les cases non remplis soit mise sur la droite.

Et j'ai rajouté la copie de la MFC sur les pages d'Horaires. J'ai mis la MFC sur la page Gestion et elle se copient bien avec la VBA.

Merci de m'aider.

Nicolas.

Bonsoir, est ce que quelqu'un peut m'aider à améliorer la macro suivante?

Macro qui regroupe toutes les cellules non vide à gauche.

Sub align()
Dim LaPlage As Range
Set LaPlage = Range("O6:AD" & [O85].End(xlUp).Row)
    With LaPlage
        .Value = .Value
        .SpecialCells(xlCellTypeBlanks).Delete Shift:=xlToLeft
    End With
End Sub

Fonctionnement de mon fichier.

Je remplis mes informations dans la feuille Gestion (les tableaux de gauche).

Cela crée des cellules dans les tableaux de droite.

Une fois que j'ai fini mes tableaux, je vais dans Horaire Samedi.

Je récupère le tableau de droite de Gestion en texte brut (Macro RecupGestion). Je lance en même temps la macro align.

Je place des cellules dans le planning de gauche et puis après, j'ai fini pour ce jour.

Vu qu'il reste toujours des cases, je fais la même chose pour Horaire Dimanche.

Je clique sur Récup Samedi, et les cases restant se répercute sur la page Horaire Dimanche. Je lance en même temps la macro align.

J'ai juste une amélioration à demander si possible plus tard est de faire la même chose pour les lignes vides.

Je m'explique: Si je place les 3 cellules de SD R5/R6 dans le planning, la ligne reste vide.

Quand je lance la macro Récup Samedi, la ligne reste vide. est ce possible de faire remonter aussi les lignes vides? (Bien entendu par rapport à la plage O6:AD85)

Merci de bien m'aider pour finaliser ce topic.

J'ai trouvé la technique en adaptant recupGestion mais j'ai des soucis.

Option Explicit

Dim fg, i, j, lgn, colne, flag

Sub RecupSamedi()

'
' Reste des matchs à jouer dans la rencontre
'

Worksheets("Horaire Dimanche").Range("O1:AG85").Clear
Set fg = Sheets("Horaire Samedi")

    lgn = 6
    Application.ScreenUpdating = False
    For i = 6 To fg.Range("O" & Rows.Count).End(xlUp).Row
            flag = 0
            For j = 15 To 21
                If fg.Cells(i, j).Value <> "" Then
                    flag = 1
                    Exit For
                End If
            Next j
            If flag = 1 Then
                fg.Range("O" & i & ":U" & i).Copy
                lgn = Application.Max(6, Range("O" & Rows.Count).End(xlUp)(2).Row)
                Range("O" & lgn).PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
        , SkipBlanks:=False, Transpose:=False
    Range("O" & lgn).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

            End If

    Next i

End Sub

J'ai trouvé ou la modification doit se faire.

lgn = Application.Max(6, Range("O" & Rows.Count).End(xlUp)(2).Row)

Edit:

Voila le code fonctionnel:

J'ai trouvé la technique en adaptant recupGestion mais j'ai des soucis.

Option Explicit

Dim fg, i, j, lgn, colne, flag

Sub RecupSamedi()

'
' Reste des matchs à jouer dans la rencontre
'

Worksheets("Horaire Dimanche").Range("O1:AG85").Clear
Set fg = Sheets("Horaire Samedi")

    lgn = 6
    Application.ScreenUpdating = False
    For i = 6 To fg.Range("O" & Rows.Count).End(xlUp).Row
            flag = 0
            For j = 15 To 21
                If fg.Cells(i, j).Value <> "" Then
                    flag = 1
                    Exit For
                End If
            Next j
            If flag = 1 Then
                fg.Range("O" & i & ":U" & i).Copy
                lgn = Application.Max(6, Range("O" & Rows.Count).End(xlUp)(2).Row)
                Range("O" & lgn).PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
        , SkipBlanks:=False, Transpose:=False
    Range("O" & lgn).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

            End If

    Next i

End Sub

J'ai juste supprimer les if i mod 9 = vu que c'est par rapport aux lignes et remplacer les variables de la plage de copie.

Si on ne laisse telle qu'elle, la macro copie bien aussi les cellules.

Si je retire une ligne complet, elle n'est pas laisser vide. C'est ce que je veux.

Mais le soucis, c'est que si j'ai la colonne O vide mais pas les autres, la ligne n'est pas recensé sur Horaire Dimanche.

Est ce que c'est possible que la macro vérifie de O à U au lieu juste de la colonne O.

D'après des essais, je pense que la modification doit se trouvé à ce niveau

lgn = Application.Max(6, Range("O" & Rows.Count).End(xlUp)(2).Row, Range("P" & Rows.Count).End(xlUp)(2).Row, Range("Q" & Rows.Count).End(xlUp)(2).Row, Range("R" & Rows.Count).End(xlUp)(2).Row, Range("S" & Rows.Count).End(xlUp)(2).Row, Range("T" & Rows.Count).End(xlUp)(2).Row, Range("U" & Rows.Count).End(xlUp)(2).Row)
                

Pouvez-vous peut-être réduire la taille du code?

Rechercher des sujets similaires à "copier remplis tableau"