Aller en bas d'un tableau qui comporte des lignes blanches
Bonjour,
Tous les mois, je dois mettre en forme un tableau dont des données viennent s'ajouter (par catégorie de contrats, soit type A, soit type B), le nombre de lignes augmente donc chaque mois. A noter : il peut y avoir un nouveau type de contrat qui apparaît.
Le problème c'est que je n'ai pas de colonne où les données sont en continues et j'ai des cellules vierges dans mon tableau.
Je n'arrive donc pas à utiliser une formule qui va "jusqu'à la fin de mon tableau - UTIL".
Est-il possible, dans une colonne, de définir la fin du tableau même lorsqu'il y a des cellule vierge à l'intérieur de celle-ci ?
Autrement, existe-t-il une formule qui puisse faire "Ctrl+A" (soit sélectionner la totalité d'un tableau) quand je sélectionne une cellule à l'intérieur d'un tableau ?
Pour le moment, j'ai noté la formule suivante (que je modifie manuelle pour faire correspondre à la dernière ligne de mon tableau) :
'Se mettre en A4 et mettre sous forme de tableau
Cells(4, 1).Select
ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$4:$M$28"), , xlYes).Name = _
"Tableau4"
Range("Tableau4[#All]").Select
ActiveSheet.ListObjects("Tableau4").TableStyle = "TableStyleMedium9"[/b]
PS : onglet 1 : document mis en page - ongle 2 : macro - onglet 3 : document d'origine.
Merci par avance pour votre réponse.
- Messages
- 2'415
- Excel
- 2019
- Inscrit
- 13/07/2017
- Emploi
- Formateur, animateur,tech.informatique
Bonjour toutes et tous
Je n'ai pas trop bien compris, tu démarres de quel onglet de ton classeur et pour faire quoi à la sortie, il y a 3 onglets
- Liste_contrat_aidé
- Macro
- ORIGINAL
J'ai mis ce que, je pense ci-joint, mais il faudra améliorer le code car, pour l'instant, je n'ai pas trop compris l'histoire des cellules vides des lignes vides de l'onglet ORIGINAL je vois qu'il y en a des lignes vides après, pas trop compris
sorry
EDIT : bouton 2 ' Mise en page tableau' fonctionnel de l'onglet Macro, il restera à l'améliorer car trop de select
Bonjour,
Travailler avec un tableau (structuré) impose de ne pas avoir de lignes vides.
Une proposition à étudier.
Cdlt.
Option Explicit
Public Sub Create_Table()
Dim ws As Worksheet, lastRow As Long, rw As Long, rng As Range
Application.ScreenUpdating = False
Set ws = Worksheets("ORIGINAL")
With ws
lastRow = .Cells(.Rows.Count, 5).End(xlUp).Row
Set rng = .Cells(3, 1).Resize(lastRow - 2, 6).SpecialCells(xlCellTypeBlanks)
rng.FormulaR1C1 = "=R[-1]C"
Set rng = .Cells(3, 1).Resize(lastRow - 2, 6) '!?
rng.Value = rng.Value
For rw = lastRow To 3 Step -1
If .Cells(rw, 7) = "" Then .Rows(rw).Delete
Next rw
lastRow = .Cells(.Rows.Count, 5).End(xlUp).Row
.ListObjects.Add(xlSrcRange, .Cells(2, 1).Resize(lastRow - 1, 13), , xlYes).Name = "Tableau1"
End With
End Sub
bonjour à tous
le plus simple pour travailler avec les plages comportant des lignes vierges, c'est de travailler une plage en déclarant 1000 lignes (ou 10 000 si besoin pour être certain que toute nouvelle ligne sera prise en compte même dans 10 ans)
ça alourdit un peu les temps de calcul, mais c'est hyper simple et hyper fiable
Bonjour toutes et tous
Je n'ai pas trop bien compris, tu démarres de quel onglet de ton classeur et pour faire quoi à la sortie, il y a 3 onglets
- Liste_contrat_aidé
- Macro
- ORIGINAL
J'ai mis ce que, je pense ci-joint, mais il faudra améliorer le code car, pour l'instant, je n'ai pas trop compris l'histoire des cellules vides des lignes vides de l'onglet ORIGINAL je vois qu'il y en a des lignes vides après, pas trop compris
sorry
EDIT : bouton 2 ' Mise en page tableau' fonctionnel de l'onglet Macro, il restera à l'améliorer car trop de select
Bonjour Andre13,
J'ai mis l'onglet ORIGINAL pour montrer les données brutes telles qu'elles apparaissent depuis Access.
Après avec mon onglet macro je supprime la page 1 (Liste contrat aidé) et avec la 2ème macro je mets en page.
Je vais tester ta proposition dès que j'ai plus de temps.
Un grand merci pour ta réponse.
Bonjour,
Travailler avec un tableau (structuré) impose de ne pas avoir de lignes vides.
Une proposition à étudier.
Cdlt.
Option Explicit Public Sub Create_Table() Dim ws As Worksheet, lastRow As Long, rw As Long, rng As Range Application.ScreenUpdating = False Set ws = Worksheets("ORIGINAL") With ws lastRow = .Cells(.Rows.Count, 5).End(xlUp).Row Set rng = .Cells(3, 1).Resize(lastRow - 2, 6).SpecialCells(xlCellTypeBlanks) rng.FormulaR1C1 = "=R[-1]C" Set rng = .Cells(3, 1).Resize(lastRow - 2, 6) '!? rng.Value = rng.Value For rw = lastRow To 3 Step -1 If .Cells(rw, 7) = "" Then .Rows(rw).Delete Next rw lastRow = .Cells(.Rows.Count, 5).End(xlUp).Row .ListObjects.Add(xlSrcRange, .Cells(2, 1).Resize(lastRow - 1, 13), , xlYes).Name = "Tableau1" End With End Sub
Bonjour Jean-Eric,
Je vais tester ta proposition dès que possible.
Un grand merci pour ton aide.
bonjour à tous
le plus simple pour travailler avec les plages comportant des lignes vierges, c'est de travailler une plage en déclarant 1000 lignes (ou 10 000 si besoin pour être certain que toute nouvelle ligne sera prise en compte même dans 10 ans)
ça alourdit un peu les temps de calcul, mais c'est hyper simple et hyper fiable
Bonjour jmd,
Très bonne idée, merci
bonjour à tous
le plus simple pour travailler avec les plages comportant des lignes vierges, c'est de travailler une plage en déclarant 1000 lignes (ou 10 000 si besoin pour être certain que toute nouvelle ligne sera prise en compte même dans 10 ans)
ça alourdit un peu les temps de calcul, mais c'est hyper simple et hyper fiable
Bonjour jmd,
Très bonne idée, merci
Bonjour,