Création d'un tableau synthétique par la suppression des espaces

Bonjour,

A partir d'un tableau de départ (ci-joint) qui comporte beaucoup de cellules vides, est-ce que je pourrai obtenir une Macro/ un programme VBA qui permette d'obtenir un tableau synthétique avec beaucoup moins de cellules vides ?
L'objectif est d'obtenir un tableau synthétique beaucoup plus lisible et facilement compréhensible

Ci-après, j'ai ajouté une capture d'écran pour illustrer mes propos

Merci d'avance

image

Bonsoir Oniyrimba, bonsoir le forum,

Fastoche avec photochope !
En vba en revanche il nous faudrait le fichier qui va bien plutôt que des captures d'écran... 35 messages à ton actif et tu ne sais toujours pas ça ?!...

bonsoir,

voici le fichier

Re,

Essaie comme ça :

Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim PL As Range 'déclare la variable PL (PLage)
Dim NL As Integer 'déclare la variable NL (Nombre de Lignes)
Dim NC As Integer 'déclare la variable NC (Nombre de Colonnes)
Dim PAS As Range 'déclare la variable PAS (Plage À Supprimer)
Dim I As Integer 'déclare la variable I (Incrément)

Set O = Worksheets("Feuil3") 'définit l'onglet O
Set PAS = O.Range("A1") 'initialise la plage à supprimer PAS
Set PL = O.Range("B4").CurrentRegion 'définit la plage PL
Set PL = PL.Offset(2, 10).Resize(PL.Rows.Count - 2, PL.Columns.Count - 10) 'redéfinit la plage PL (sans les en-têtes)
NL = PL.Rows.Count 'définit le nombre de lignes NL de la plage PL
NC = PL.Columns.Count 'définit le nombre de colonnes NC de la plage PL
For I = 1 To NL 'boucle sur toutes les lignes I de PL
    'si la ligne contient NC cellules vides, redéfinit la plage à supprimer PAS
    If Application.WorksheetFunction.CountBlank(PL.Rows(I)) = NC Then Set PAS = IIf(PAS.Cells.Count = 1, O.Rows(I + 5), Application.Union(PAS, O.Rows(I + 5)))
Next I 'prochaine ligne de la boucle
PAS.Delete 'supprime la plage PAS
NL = PL.Rows.Count 'redéfinit le nombre de lignes NL de la plage PL
Set PAS = O.Range("A1") 'réinitialise la plage PAS
For I = 1 To NC 'boucle sur toutes les colonnes I de PL
    'si la colonne contient NL cellules vides, redéfinit la plage à supprimer PAS
    If Application.WorksheetFunction.CountBlank(PL.Columns(I)) = NL Then Set PAS = IIf(PAS.Cells.Count = 1, O.Columns(I + 11), Application.Union(PAS, O.Columns(I + 11)))
Next I 'prochaine ligne de la boucle
PAS.Delete 'supprime la plage PAS
End Sub

merci beaucoup

je regarde cela

Bonjour,

J'ai intégré le codage VBA dans le fichier mais cela ne fonctionne pas.

J'ai joint le fichier avec ta macro intégré

Merci de ton aide

Re,

Heu... Chez moi ça fonctionne... regarde :

Bonjour,

J'espère que tu vas bien.

Merci pour ton aide

En fait, est-til possible de supprimer beaucoup plus de cellules vides sur le tableau ? car ta Macro supprime des cellules vides mais à la fin de la programmation il en reste encore beaucoup

Merci d'avance TauThème

Re,

Je ne doit pas avoir compris ton énoncé initial. La macro supprime la ligne si elle ne contient aucune donnée et pareil pour la colonne, uniquement si la colonne ne contient aucune donnée. On pourrait supprimer toutes les cellules vides mais les deux lignes d'en-tête (4 et 5) ne correspondront plus à rien.

Donne-moi un exemple de ce que tu as avant et ce que tu voudrait après (sur une petit tableau de quelques lignes, quelques colonnes) et peut-être je comprendrai mieux...

Bonjour,

Est-ce que la capture d'écran ci-dessous est plus clair ?

Merci d'avance

capturetableau a synthetiser

Re,

Je crois que vous ne comprenez pas. S'il n'y avait pas d'en-têtes, pas de problèmes. Mais si je supprime les cellules vides, toutes les données se retrouveront sous 1/3, 2/3, etc.

Voir le problème sur les premières lignes du tableau :

capture
Rechercher des sujets similaires à "creation tableau synthetique suppression espaces"