Insertion ligne par macro

gourdin

XLDnaute Impliqué
Bonjour,

Je pense qu'il est mieux de lire la pièce jointe car difficile à expliquer sans l'exemple simplifié

Merci
 

Pièces jointes

  • forum_nov14.xls
    26 KB · Affichages: 39

Modeste

XLDnaute Barbatruc
Re : Insertion ligne par macro

Bonjour gourdin,
Salut JC :D,

Un petit bout de code qui ne mange pas de pain:
VB:
Sub recopie()
lig = 4
For r = 4 To [B50000].End(xlUp).Row
    Cells(lig, 7).Resize(Cells(r, 4).Value, 2).Value = Cells(r, 2).Resize(1, 2).Value
    lig = lig + Cells(r, 4).Value
Next r
End Sub
 

Modeste

XLDnaute Barbatruc
Re : Insertion ligne par macro

Re,

Sur mon fivhier, le code macro ne fonctionne pas
"Caisse à dires" (comme disait mon oncle, chauffeur de taxi)
Entendons-nous: ce n'est pas le fivhier que j'interroge, mais à quel fichier fais-tu référence? Celui que tu avais déposé ici?? Ou ton fichier réel!?
... Car dans le fichier de ton message #1, j'avais testé (et ai re-testé encore!?)

Et la formule proposée par JCGL, tu l'as essayée?
 

Staple1600

XLDnaute Barbatruc
Re : Insertion ligne par macro

Bonsoir à tous

Modeste
Un petit bout de Dim, ca ne mange de pas de biscottes ;)
Sub recopie()
Dim lig As Long
lig = 4
For r = 4 To [B50000].End(xlUp).Row
Cells(lig, 7).Resize(Cells(r, 4).Value, 2).Value = Cells(r, 2).Resize(1, 2).Value
lig = lig + Cells(r, 4).Value
Next r
End Sub
 

Modeste

XLDnaute Barbatruc
Re : Insertion ligne par macro

Re²
Un petit bout de Dim, ca ne mange de pas de biscottes ;)
Mais ... ça frise l'obsession, cette histoire de panties! :eek:


gourdin à dit:
Y'a pas d'raison, mon bon Monsieur! (mais expliquer où le bas (pour faire plaisir à Staple1600!) blessait aurait peut-être été utile à ceux qui passeront par ici, plus tard :) ... s'il te reste 2 minutes)

Note aux générations futures: n'allez pas dire à vos prof que c'est de cette manière qu'on écrit bât, dans l'expression ci-dessus, sous prétexte que vous l'avez vu sur internet!
 

job75

XLDnaute Barbatruc
Re : Insertion ligne par macro

Bonjour à tous,

S'il y a un grand nombre de lignes, c'est beaucoup plus rapide avec un tableau VBA :

Code:
Sub Recap()
Dim t, n&, rest(), j&, i&, x, y
t = Range("B4:D" & Range("B" & Rows.Count).End(xlUp).Row + 3)
n = Application.Sum(Application.Index(t, , 3))
ReDim rest(1 To IIf(n, n, 1), 1 To 2)
j = 1
For i = 1 To UBound(t)
  x = t(i, 1): y = t(i, 2)
  For j = j To j + Val(t(i, 3)) - 1
    rest(j, 1) = x: rest(j, 2) = y
  Next
Next
If n Then [G4].Resize(n, 2) = rest
Range("G" & n + 4 & ":H" & Rows.Count).Delete xlUp
End Sub
Nota : pas de problème ici avec le texte explicatif...

A+
 
Dernière édition:

Membres actuellement en ligne

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16