Copier ligne
Marc_5338
Messages postés
9
Statut
Membre
-
yg_be Messages postés 24281 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 24281 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Dans une feuille excel , je rentre des items de la colonne B a la colonne E.
Je peux avoir autant de ligne que le client achete d'objet.
Je souhaite que en appuyant sur le bouton valider, cela copie les lignes de la facture vers une autre feuille de suivi.
Mon soucis est que cela ne copie qu'e la premiere ligne de la facture.
Pourrais je avoir un peu d'aide s'il vous plait?
Merci
Dans une feuille excel , je rentre des items de la colonne B a la colonne E.
Je peux avoir autant de ligne que le client achete d'objet.
Je souhaite que en appuyant sur le bouton valider, cela copie les lignes de la facture vers une autre feuille de suivi.
Mon soucis est que cela ne copie qu'e la premiere ligne de la facture.
Private Sub CommandButton1_Click()
Dim nombre_ligne As Integer
Dim ligne As Integer
Dim dlt As Integer
'controler si toute les informations besoin sont la
For ligne = 0 To nombre_ligne
Sheets("Facturation").ListObjects(1).ListRows.Add
dlt = Sheets("Facturation").Range("b9999").End(xlUp).Row
Sheets("Facturation").Range("c" & dlt) = Range("d5")
Sheets("Facturation").Range("d" & dlt) = Range("b16")
Sheets("Facturation").Range("e" & dlt) = Range("c16")
Sheets("Facturation").Range("f" & dlt) = Range("a16")
Sheets("Facturation").Range("g" & dlt) = Range("d16")
Sheets("Facturation").Range("h" & dlt) = Range("e16")
Sheets("Facturation").Range("i" & dlt) = Range("d8")
Next ligne
Range("D8") = ""
Sheets("Config").Range("d22") = Sheets("Config").Range("d22") + 1
'savegarder le fichier
ActiveWorkbook.Save
End Sub
Private Sub Worksheet_Activate()
'Range("d4") = ""
End Sub
Pourrais je avoir un peu d'aide s'il vous plait?
Merci
A voir également:
- Copier ligne
- Partager photos en ligne - Guide
- Comment copier une vidéo youtube - Guide
- Mètre en ligne - Guide
- Super copier - Télécharger - Gestion de fichiers
- Formulaire en ligne de meta - Guide
9 réponses
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
bonjour,
je vois plusieurs défauts dans ton code:
- ta variable nombre_ligne n'est jamais initialisée
- ta variable dlt n'est jamais initialisée
- ta variable ligne n'est pas utilisée
tout cela explique bien le comportement que tu observes.
est-ce ton premier code VBA?
cherches-tu une formation dans ce domaine?
je vois plusieurs défauts dans ton code:
- ta variable nombre_ligne n'est jamais initialisée
- ta variable dlt n'est jamais initialisée
- ta variable ligne n'est pas utilisée
tout cela explique bien le comportement que tu observes.
est-ce ton premier code VBA?
cherches-tu une formation dans ce domaine?
J'ai suivi le tuto de tuto derien pour la gestion des stock.
J'ai ajouté le system de facturation qui fonctionne avec le booking et le stock, mais la je souhaite le refaire sans les user forms et je ne comprends pas comment initialiser mes lignes dans ce cas.
Peux tu me donner un exemple s'il te plait.
J'ai ajouté le system de facturation qui fonctionne avec le booking et le stock, mais la je souhaite le refaire sans les user forms et je ne comprends pas comment initialiser mes lignes dans ce cas.
Peux tu me donner un exemple s'il te plait.
Sheets("Facturation").Range("c" & dlt) = Range("d5")
Sur la feuille Facturation je vais récupérer la 1ere cellule vide de la colonne C et y copier la valeur de la cellule d5 de la feuille Facture.
Sur la feuille Facturation je vais récupérer la 1ere cellule vide de la colonne C et y copier la valeur de la cellule d5 de la feuille Facture.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bon matin
oui et cela fonctionne pour la 1ere ligne
Cela ne me copie que la 1ere ligne encore.


Je facture 3 item puis j'appuie sur le bouton, le code s'effectue.
Je ne vois pas l'erreur.
oui et cela fonctionne pour la 1ere ligne
Dim nombre_ligne As Integer
Dim ligne As Integer
Dim dlt As Integer
____________ici je recupere le nombre de cellule non vide entre a16 et a27
Sub Compter()
nombre_ligne Application.CountA([A16:A27])
End Sub
____________ Resutat =3 c'est correct
Private Sub CommandButton1_Click()
'controler si toute les informations besoin sont la
For ligne = 0 To nombre_ligne ' ligne 0 a 3
Sheets("Facturation").ListObjects(1).ListRows.Add
dlt = Sheets("Facturation").Range("b9999").End(xlUp).Row
Sheets("Facturation").Range("b" & dlt) = Sheets("Facture").Range("d4")
Sheets("Facturation").Range("c" & dlt) = Sheets("Facture").Range("d5")
Sheets("Facturation").Range("d" & dlt) = Sheets("Facture").Range("b16")
Sheets("Facturation").Range("e" & dlt) = Sheets("Facture").Range("c16")
Sheets("Facturation").Range("f" & dlt) = Sheets("Facture").Range("a16")
Sheets("Facturation").Range("g" & dlt) = Sheets("Facture").Range("d16")
Sheets("Facturation").Range("h" & dlt) = Sheets("Facture").Range("e16")
Sheets("Facturation").Range("i" & dlt) = Sheets("Facture").Range("d8")
Next ligne
Range("D8") = ""
Sheets("Config").Range("d22") = Sheets("Config").Range("d22") + 1
'savegarder le fichier
ActiveWorkbook.Save
End Sub
Cela ne me copie que la 1ere ligne encore.
Je facture 3 item puis j'appuie sur le bouton, le code s'effectue.
Je ne vois pas l'erreur.
Merci de ton aide.
Je viens de modifier le code et c'est déjà mieux.
J'ai bien mes 3 lignes a présent mais le soucis est que c'est 3 fois la même.
J'ai crée ligne et je l’incrémente jusqu'au nombre de ligne contenue dans Facture.

Je pense que le soucis vient de cette ligne
Car ce n'est pas une liste.
Je viens de modifier le code et c'est déjà mieux.
J'ai bien mes 3 lignes a présent mais le soucis est que c'est 3 fois la même.
J'ai crée ligne et je l’incrémente jusqu'au nombre de ligne contenue dans Facture.
Dim nombre_ligne As Integer
Dim ligne As Integer
Dim dlt As Integer
Sub Compter()
nombre_ligne Application.CountA([A16:A27])
End Sub
Private Sub CommandButton1_Click()
'controler si toute les informations besoin sont la
ligne = 0
For ligne = 0 To nombre_ligne
Sheets("Facturation").ListObjects(1).ListRows.Add
dlt = Sheets("Facturation").Range("b9999").End(xlUp).Row
Sheets("Facturation").Range("b" & dlt) = Sheets("Facture").Range("d4")
Sheets("Facturation").Range("c" & dlt) = Sheets("Facture").Range("d5")
Sheets("Facturation").Range("d" & dlt) = Sheets("Facture").Range("b16")
Sheets("Facturation").Range("e" & dlt) = Sheets("Facture").Range("c16")
Sheets("Facturation").Range("f" & dlt) = Sheets("Facture").Range("a16")
Sheets("Facturation").Range("g" & dlt) = Sheets("Facture").Range("d16")
Sheets("Facturation").Range("h" & dlt) = Sheets("Facture").Range("e16")
Sheets("Facturation").Range("i" & dlt) = Sheets("Facture").Range("d8")
Next ligne
Range("D8") = ""
Sheets("Config").Range("d22") = Sheets("Config").Range("d22") + 1
ligne = ligne + 1
'savegarder le fichier
ActiveWorkbook.Save
Je pense que le soucis vient de cette ligne
Sheets("Facturation").ListObjects(1).ListRows.Add
Car ce n'est pas une liste.
pourquoi ne montres-tu qu'une partie de ton code?
à quoi servent les lignes 12 et 31?
as-tu essayé en supprimant la ligne 15 qui te semble suspecte?
à quoi sert la déclaration de la routine Compter()?
tu es surpris que c'est 3 fois la même information copiée. dans quelle partie de ton code essaies-tu de copier autre chose?
à quoi servent les lignes 12 et 31?
as-tu essayé en supprimant la ligne 15 qui te semble suspecte?
à quoi sert la déclaration de la routine Compter()?
tu es surpris que c'est 3 fois la même information copiée. dans quelle partie de ton code essaies-tu de copier autre chose?
Voici le code complet
La ligne 12 et 31 servent a initialiser le count en fonction du nombre d'item dans la facture.
J'en ai 3 donc je commence a 0 puis incrémente de +1 jusqu'a 3.
Si je supprime la ligne suspecte cela n'enregistre que la 1ere ligne, donc au final elle est correcte.
Le fonction compter me sert a savoir le nombre de ligne pleine dans Facture entre les lignes a16 et a27_____________ egal a 3.
tu es surpris que c'est 3 fois la même information copiée. dans quelle partie de ton code essaies-tu de copier autre chose?
je comprends que je dois lire et copier la ligne 2 puis 3.
J'essai un truc et reviens.
Merci
Dim nombre_ligne As Long
Dim ligne As Integer
Dim dlt As Integer
Sub Compter()
nombre_ligne Application.CountA([A16:A27])
End Sub
Private Sub CommandButton1_Click()
'controler si toute les informations besoin sont la
ligne = 0
For ligne = 0 To nombre_ligne
Sheets("Facturation").ListObjects(1).ListRows.Add
dlt = Sheets("Facturation").Range("b9999").End(xlUp).Row
Sheets("Facturation").Range("b" & dlt) = Sheets("Facture").Range("d4")
Sheets("Facturation").Range("c" & dlt) = Sheets("Facture").Range("d5")
Sheets("Facturation").Range("d" & dlt) = Sheets("Facture").Range("b16")
Sheets("Facturation").Range("e" & dlt) = Sheets("Facture").Range("c16")
Sheets("Facturation").Range("f" & dlt) = Sheets("Facture").Range("a16")
Sheets("Facturation").Range("g" & dlt) = Sheets("Facture").Range("d16")
Sheets("Facturation").Range("h" & dlt) = Sheets("Facture").Range("e16")
Sheets("Facturation").Range("i" & dlt) = Sheets("Facture").Range("d8")
Next ligne
Range("D8") = ""
Sheets("Config").Range("d22") = Sheets("Config").Range("d22") + 1
ligne = ligne + 1
'savegarder le fichier
ActiveWorkbook.Save
End Sub
Private Sub Worksheet_Activate()
'Range("d4") = ""
End Sub
La ligne 12 et 31 servent a initialiser le count en fonction du nombre d'item dans la facture.
J'en ai 3 donc je commence a 0 puis incrémente de +1 jusqu'a 3.
Si je supprime la ligne suspecte cela n'enregistre que la 1ere ligne, donc au final elle est correcte.
Le fonction compter me sert a savoir le nombre de ligne pleine dans Facture entre les lignes a16 et a27_____________ egal a 3.
tu es surpris que c'est 3 fois la même information copiée. dans quelle partie de ton code essaies-tu de copier autre chose?
je comprends que je dois lire et copier la ligne 2 puis 3.
J'essai un truc et reviens.
Merci
Je viens de tout reprendre, cela est parfait saut que j'obtiens une erreur si je veux copier sur une seconde feuille.
As tu un indice?
As tu un indice?
Private Sub CommandButton1_Click()
Dim nombre_ligne As Integer
Dim ligne As Integer
Dim dlt As Integer
nombre_ligne = Application.CountA(Range("a16:a27")) 'compte nombre valeurs dans la colonne description de la facture
For ligne = 1 To nombre_ligne 'de 1 à Nb ligne
With Sheets("Facturation") 'sur facturation
.ListObjects(1).ListRows.Add 'ajoute ligne au tableau
With .Range("Facture") 'sur les données du tableau (remplacer nom)
dlt = .Rows.Count 'dernière ligne tab
'si tableau commence en colonne C comme supposé
'ICI, ON CONSIDERE LES PLAGES NOMMEES
'LES RANGE QTÉ À HT NE CONTIENNENT PAS LE TITRE !
.Cells(dlt, 1).Value = Range("d4") '!!! CE SONT DES EXEMPLES AVEC LES PLAGES NOMMEES (ICI, D5)
.Cells(dlt, 2).Value = Range("d5")
.Cells(dlt, 3).Value = Range("b16").Cells(ligne)
.Cells(dlt, 4).Value = Range("c16").Cells(ligne)
.Cells(dlt, 5).Value = Range("a16").Cells(ligne)
.Cells(dlt, 6).Value = Range("d16").Cells(ligne)
.Cells(dlt, 7).Value = Range("e16").Cells(ligne)
.Cells(dlt, 8).Value = Range("d8")
End With
End With
With Sheets("Booking") 'sur facturation
.ListObjects(1).ListRows.Add 'ajoute ligne au tableau
With .Range("Facturation") 'sur les données du tableau (remplacer nom)
dlt = .Rows.Count 'dernière ligne tab
'si tableau commence en colonne C comme supposé
'ICI, ON CONSIDERE LES PLAGES NOMMEES
'LES RANGE QTÉ À HT NE CONTIENNENT PAS LE TITRE !
.Cells(dlt, 2).Value = "Sortie"
.Cells(dlt, 3).Value = Range("d4").Cells(ligne)
.Cells(dlt, 4).Value = Range("d5").Cells(ligne)
.Cells(dlt, 5).Value = Range("a16").Cells(ligne)
.Cells(dlt, 6).Value = Range("d16").Cells(ligne)
.Cells(dlt, 7).Value = Range("e16").Cells(ligne)
.Cells(dlt, 8).Value = Range("d8")
End With
End With
Next ligne
Range("D8") = ""
Sheets("Config").Range("d22") = Sheets("Config").Range("d22") + 1
'savegarder le fichier
ActiveWorkbook.Save
End Sub
Bon je n'arrive a rien, pourrais tu me corriger le code s'il te plait?
peux-tu toujours préciser la feuille devant Range? par exemple, en ligne 19:
au lieu de:
écrire
avec, bien sûr, le bon nom de feuille.
veille aussi à avoir
ensuite, si le problème est toujours présent, partager ton code, le message d'erreur, et le numéro de la ligne où se produit l'erreur.
au lieu de:
.Cells(dlt, 1).Value = Range("d4")
écrire
.Cells(dlt, 1).Value = Sheets("???").Range("d4")
avec, bien sûr, le bon nom de feuille.
veille aussi à avoir
option explicitau début du module.
ensuite, si le problème est toujours présent, partager ton code, le message d'erreur, et le numéro de la ligne où se produit l'erreur.