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: