Bonjour tout le monde,
Alors voila, je fais une macro pour accélérer la rédaction des factures. Elle va insérer des lignes suivant le nombre de produits à facturer.
Dans un premier temps elle boucle pour trouver la première ligne du tableau avec les en-têtes (ligne variable) et fixe la valeur dans une variable "ligne"%.
La variable "NbProduit"% (Nombre de produit à facturer) représente le nombre de lignes à rajouter au tableau (valeur entré par l'utilisateur).
Le problème est que les lignes du tableaux contiennent des listebox Excel (validation de données). J'ai donc choisi de boucler pour insérer n nombre de ligne puis d'utiliser .Autofill pour tirer les lignes. ça marche avec l'enregistreur de macro mais plus quand je change les variables.
Et il me renvoie un message d'erreur avec l'autofill. Ces bonnes vielles aides excel me disent que la destination doit contenir la plage de départ, or : .Range("B" & ligne + NbProduit & ":L" & ligne + NbProduit) ne la contient pas...
Ça doit être un truc con mais je bloque! Merci d'avance
Alors voila, je fais une macro pour accélérer la rédaction des factures. Elle va insérer des lignes suivant le nombre de produits à facturer.
Dans un premier temps elle boucle pour trouver la première ligne du tableau avec les en-têtes (ligne variable) et fixe la valeur dans une variable "ligne"%.
La variable "NbProduit"% (Nombre de produit à facturer) représente le nombre de lignes à rajouter au tableau (valeur entré par l'utilisateur).
Le problème est que les lignes du tableaux contiennent des listebox Excel (validation de données). J'ai donc choisi de boucler pour insérer n nombre de ligne puis d'utiliser .Autofill pour tirer les lignes. ça marche avec l'enregistreur de macro mais plus quand je change les variables.
Code:
With Sheets("facture")
Select Case NbProduit
Case 0: MsgBox "Entrer un nombre de produit à facturer": GoTo fin
Case 1: GoTo rien 'la premiere ligne est déjà présente
Case 2 To 15: GoTo insertionPage1
Case Else: MsgBox "T'es un sacré vendeur toi !!"
End Select
insertionPage1:
With .Range("B" & i + ligne + 2 & ":L" & i + ligne + 2) '.Select 'ligne +2 car il doit insérer sous la première ligne
For i = 1 To NbProduit - 1
.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Next
End With
Set SourceRange = .Range("B" & ligne + 1 & ":L" & ligne + 1)
Set fillRange = .Range("B" & ligne + NbProduit & ":L" & ligne + NbProduit)
SourceRange.AutoFill Destination:=fillRange
End With
Et il me renvoie un message d'erreur avec l'autofill. Ces bonnes vielles aides excel me disent que la destination doit contenir la plage de départ, or : .Range("B" & ligne + NbProduit & ":L" & ligne + NbProduit) ne la contient pas...
Ça doit être un truc con mais je bloque! Merci d'avance
Dernière édition: