Code VBA copie de lignes dans un autre onglet en fin de tableau
Résolu
Ambrita83
Messages postés
6
Statut
Membre
-
Ambrita83 Messages postés 6 Statut Membre -
Ambrita83 Messages postés 6 Statut Membre -
Bonjour à tous,
Malgré mes différentes tentatives je ne parviens pas à ajouter automatiquement en sortie de stock les articles contenus dans un BL après validation de ce dernier.
J'ai deux onglets: "BL" et "Entrées et Sorties".
Les cellules A18 à A38 de l'onglet "BL" doivent apparaître à partir de la première cellule vide de la colonne C de l'onglet "Entrées et Sorties" -> nom des articles.
Les cellules E18 à E38 du "BL" doivent alors être copiées en conséquence dans la colonne F de l'onglet "Entrées et Sorties" -> quantité.
Voici ma dernière tentative:
Sheets("Entrées et Sorties").Select
Range("C" & Rows.Count).End(xlUp).Offset(1, 0).Select
ActiveCell.FormulaR1C1 = "=IF(BL!R[11]C[-2]="""","""",BL!R[11]C[-2])"
ActiveCell.Select
Selection.Copy
ActiveCell.Offset(0, 2).Select
ActiveCell.FormulaR1C1 = "=IF(RC[-3]="""","""",BL!R[11]C[-1])"
ActiveCell.Application.CutCopyMode = False
Selection.EntireRow.Select
Selection.Copy
Range(ActiveRow, ActiveRow.End(xlUp)).Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Columns("C:F").Select
Selection.Copy
Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Merci par avance pour votre aide!
Malgré mes différentes tentatives je ne parviens pas à ajouter automatiquement en sortie de stock les articles contenus dans un BL après validation de ce dernier.
J'ai deux onglets: "BL" et "Entrées et Sorties".
Les cellules A18 à A38 de l'onglet "BL" doivent apparaître à partir de la première cellule vide de la colonne C de l'onglet "Entrées et Sorties" -> nom des articles.
Les cellules E18 à E38 du "BL" doivent alors être copiées en conséquence dans la colonne F de l'onglet "Entrées et Sorties" -> quantité.
Voici ma dernière tentative:
Sheets("Entrées et Sorties").Select
Range("C" & Rows.Count).End(xlUp).Offset(1, 0).Select
ActiveCell.FormulaR1C1 = "=IF(BL!R[11]C[-2]="""","""",BL!R[11]C[-2])"
ActiveCell.Select
Selection.Copy
ActiveCell.Offset(0, 2).Select
ActiveCell.FormulaR1C1 = "=IF(RC[-3]="""","""",BL!R[11]C[-1])"
ActiveCell.Application.CutCopyMode = False
Selection.EntireRow.Select
Selection.Copy
Range(ActiveRow, ActiveRow.End(xlUp)).Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Columns("C:F").Select
Selection.Copy
Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Merci par avance pour votre aide!
A voir également:
- Code VBA copie de lignes dans un autre onglet en fin de tableau
- Code ascii - Guide
- Tableau word - Guide
- Partage de photos en ligne - Guide
- Trier un tableau excel - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
1 réponse
Bonjour Ambrita,
Essaie plutôt quelquechose ceomme ceci :
Cdlmnt
Via
Essaie plutôt quelquechose ceomme ceci :
Dim Ligne As Long
Ligne = Range("C" & Rows.Count).End(xlUp).Row
For x=18 to 38
IF Sheets("Entrées et Sorties").Range("A" & x)<>"" then
Ligne=Ligne+1
Sheets("BL").range("C" & Ligne)=Sheets("Entrées et Sorties").Range("A" & x)
Sheets("BL").range("F" & Ligne)=Sheets("Entrées et Sorties").Range("E" & x)
End if
Next x
Cdlmnt
Via
Merci pour ce retour.
J'ai créé une macro Stocks_V3 avec ta version mais sans résultat.
J'ai tenté en inversant les colonnes dans le code (Stocks_V4) mais ça ne fonctionne pas non plus.
Je ne maîtrise pas encore bien le VBA. Je te joins le fichier, en espérant que tu pourras trouver une solution à mon pb.
https://www.cjoint.com/c/GCxjh2sDIxu
Pour info, le code sur lequel je travaille est destiné à être intégré à la macro valiation_BL.
Merci encore,
Cdlt,
Ambrita
Désolé j'ai inversé les feuilles BL et Entrées Sorties dans la macro !!
La bonne macro est :
Sub Stocks_v3() Dim Ligne As Long Ligne = Sheets("Entrées et Sorties").Range("C" & Rows.Count).End(xlUp).Row MsgBox Ligne For x = 18 To 38 If Sheets("BL").Range("A" & x) <> "" Then Ligne = Ligne + 1 Sheets("Entrées et Sorties").Range("C" & Ligne) = Sheets("BL").Range("A" & x) Sheets("Entrées et Sorties").Range("F" & Ligne) = Sheets("BL").Range("E" & x) End If Next x End SubCdlmnt
Via
Il ne me reste plus qu'à comprendre comment fonctionne le code dans le détail pour la prochaine fois ;)
Merci encore Via!!!