Bonjour,
je reviens vers vous pour une question d'organisation de ce tableau,
j'aimerais que visuellement cela ressemble à une cascade comme l'image en PJ:
pouvez-vous m'aider à réctifier le code de ma macro?
Merci d'avence.
Cordialement.
Bonjour,
je reviens vers vous pour une question d'organisation de ce tableau,
j'aimerais que visuellement cela ressemble à une cascade comme l'image en PJ:
pouvez-vous m'aider à réctifier le code de ma macro?
Merci d'avence.
Cordialement.
J'ai envoyé en pj le fichier excel.
voilà le code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 Sub insererLignes() Dim derLig As Long, nbLig As Long, i As Long, j As Long, derCol As Long, car As Integer derLig = Range("A" & Rows.Count).End(xlUp).Row For i = derLig To 2 Step -1 derCol = Cells(1, Cells.Columns.Count).End(xlToLeft).Column nbLig = WorksheetFunction.Max(Range(Cells(i, 2), Cells(i, derCol))) If nbLig = 0 Then nbLig = 1 ' ICI JE METS 1 SI C'EST ZERO Rows(i + 1).Resize(nbLig).Insert shift:=xlDown Cells(i, 1).Copy Destination:=Range(Cells(i + 1, 1), Cells(i + nbLig, 1)) For j = 2 To derCol car = Cells(i, j) If car <> 0 Then If j = 3 Then Range(Cells(i + 1, j), Cells(i + car, j)) = UCase(Left(Cells(1, j), 2)) Else Range(Cells(i + 1, j), Cells(i + car, j)) = UCase(Left(Cells(1, j), 1)) End If End If Next j derLig = Range("A" & Rows.Count).End(xlUp).Row Next i End Sub
Beaucoup de participants n'ouvrent pas les pièces jointes, surtout celles pouvant contenir des macros, entre autre pour les raisons indiquées ici :
https://www.developpez.net/forums/d8...s-discussions/
Merci du conseil dsl je ne savais pas pour la pièce jointe.
es ce que le code que je vous ai envoyer vous aide à comprendre mon problème?
Je ne comprends pas trop le rôle du If j = 3 Then mais, à part ça, je vois à peu près ce que tu souhaites faire.
Le plus simple est que ton nbLig ne soit pas sur le Max des valeurs mais sur la somme.
Ensuite, il faudrait te mettre une variable compteur (appelons-la Plus, par exemple) à remettre à 0 juste avant ton For j et qui s'incrémente à chaque tour de la boucle de la valeur des lignes déjà remplies pour cette valeur i.
Ainsi, tu n'aurais qu'à ajouter cette variable dans l'assignation des Range :
Je n'ai pas testé mais ça devrait marcher.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Range(Cells(i + 1 + Plus, j), Cells(i + car + Plus, j)) = UCase(Left(Cells(1, j), 2))
Partager