Copier lignes d'1 feuille à une autre ss cond
Résolu
Pat 59
-
Pat_59 Messages postés 26 Statut Membre -
Pat_59 Messages postés 26 Statut Membre -
Bonjour,
Je suis novice en VBA et je cherche à copier coller des lignes de feuilles différentes (8 excactements) sur une autre feuille (recap en quelque sorte) lorsqu'une cellule sur une de ces lignes est différentes de 0.
Je ne sais pas si j'ai été assez clair?
Pour être un peu plus clair: j'ai un classeur qui me donne des factures en fonction des bons de livraison. Le probléme est que je peus avoir plusieurs livraisons dans un mois et je souhaite n'avoir q'une seule facture par mois.
Voila, pas facil d'expliquer clairement mon probléme, j'ai maintenant besoin de l'aide de personnes plus expérimentées que moi en VBA.
Merci d'avance
Je suis novice en VBA et je cherche à copier coller des lignes de feuilles différentes (8 excactements) sur une autre feuille (recap en quelque sorte) lorsqu'une cellule sur une de ces lignes est différentes de 0.
Je ne sais pas si j'ai été assez clair?
Pour être un peu plus clair: j'ai un classeur qui me donne des factures en fonction des bons de livraison. Le probléme est que je peus avoir plusieurs livraisons dans un mois et je souhaite n'avoir q'une seule facture par mois.
Voila, pas facil d'expliquer clairement mon probléme, j'ai maintenant besoin de l'aide de personnes plus expérimentées que moi en VBA.
Merci d'avance
A voir également:
- Copier lignes d'1 feuille à une autre ss cond
- Comment copier une vidéo youtube - Guide
- Super copier - Télécharger - Gestion de fichiers
- Comment imprimer en a5 sur une feuille a4 - Guide
- Bruler feuille de laurier - Guide
- Feuille de pointage excel - Télécharger - Tableur
55 réponses
je pense que ca résoud ton soucis ;)
For i = 14 To 61
if i<>47 then
For j = 10 To 17
If Sheets(j).Cells(i, 9) <> 0 Xor Sheets(j).Cells(i, 9) = " " Then
Sheets(j).Rows(i).Copy
Sheets("FACTURE").Select
Sheets("FACTURE").Rows(val).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValues, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
val = val + 1
End If
Next j
end if
Next i
For i = 14 To 61
if i<>47 then
For j = 10 To 17
If Sheets(j).Cells(i, 9) <> 0 Xor Sheets(j).Cells(i, 9) = " " Then
Sheets(j).Rows(i).Copy
Sheets("FACTURE").Select
Sheets("FACTURE").Rows(val).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValues, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
val = val + 1
End If
Next j
end if
Next i
Ta solution fonctionne aussi pour mes questions précédentes mais je cherche maintenant à faire des sous totaux et un total général!!
Il est peu être possible de faire ça en insérant une fonction dans cellule grace au petit programme.
Enfin je ne sais pas, j'essaie juste de faciliter la tâche à la personne qui pourrai m'aider!!
Merci d'avance
Il est peu être possible de faire ça en insérant une fonction dans cellule grace au petit programme.
Enfin je ne sais pas, j'essaie juste de faciliter la tâche à la personne qui pourrai m'aider!!
Merci d'avance
pour passer une formule en vba :
Cells(maligne,macolonne).Value = "=formulexl"
A noter que vba gere les formules en anglais..
Cells(maligne,macolonne).Value = "=formulexl"
A noter que vba gere les formules en anglais..
Je ne saisi pas bien ton problème
Tes sous totaux doivent être calculés dans quelles cellules:
Seulement dans la cellule ligne 47 colonne 10 et dans la cellule 62 colonne 10 de ta feuille facture?
Si c'est ça tu insert ce code entre les deux fonctions
Sheet("FACTURE").cells(47,10).select
ActiveCell.Formula = "=SUM(J14:J46)"
et tu met celui là à la fin
Sheet("FACTURE").cells(62,10).select
ActiveCell.Formula = "=SUM(J48:J61)"
Tes sous totaux doivent être calculés dans quelles cellules:
Seulement dans la cellule ligne 47 colonne 10 et dans la cellule 62 colonne 10 de ta feuille facture?
Si c'est ça tu insert ce code entre les deux fonctions
Sheet("FACTURE").cells(47,10).select
ActiveCell.Formula = "=SUM(J14:J46)"
et tu met celui là à la fin
Sheet("FACTURE").cells(62,10).select
ActiveCell.Formula = "=SUM(J48:J61)"
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Oui c'est ça, je veus des sous totaux entre deux mais le probléme est qu'il ne serais pas forcément à la ligne 47. Car la premiére fonction peut reprendre les lignes 14 à 46 de mes 8 feuilles...
En fait je voudrais ces sommes dans la colonne 10 et ligne val si je ne me trompe pas!!!
Puis à la fin je voudrais la somme des sous totaux dans la colonne 10 mais pareil, je ne sais pas à quelle ligne!!
J'espére que vous avez compris
Merci d'avance
En fait je voudrais ces sommes dans la colonne 10 et ligne val si je ne me trompe pas!!!
Puis à la fin je voudrais la somme des sous totaux dans la colonne 10 mais pareil, je ne sais pas à quelle ligne!!
J'espére que vous avez compris
Merci d'avance
Si ça peut vous aider à comprendre mon probléme voici ce que j'ai essayé mais ça ne fonctionne pas!!
Rien ne s'affiche dans ma case
Sheets("FACTURE").Cells(val, 10).Select
ActiveCell.Formula = "=SUM(J14:J(val-1))"
Rien ne s'affiche dans ma case
Sheets("FACTURE").Cells(val, 10).Select
ActiveCell.Formula = "=SUM(J14:J(val-1))"
ActiveCell.formulaR1C1="=SUM(R[-(Val-14)]C:R[-(val-1)C]" pour le premier sous total
ActiveCell.formulaR1C1="=SUM(R[-(Val-48)]C:R[-(val-1)C]" pour le deuxième sous total
Et pour ta ligne total
.Cells(Val+1,10).select
ActiveCell.formulaR1C1="=SUM(R[-(Val-49)]C;R[-(val)C]"
ActiveCell.formulaR1C1="=SUM(R[-(Val-48)]C:R[-(val-1)C]" pour le deuxième sous total
Et pour ta ligne total
.Cells(Val+1,10).select
ActiveCell.formulaR1C1="=SUM(R[-(Val-49)]C;R[-(val)C]"
Bon là tout de suite je peux pas trop faire plus, tout ce que j'essaye ne marche pas plus...
Si je trouve plus tard je te dit
Si je trouve plus tard je te dit
ActiveCell.formulaR1C1="=SUM(R[-(Val-49)]C;R[-(val)C]"
=>
ActiveCell.formulaR1C1="=SUM(R" & (Val-49)& ";R" & (val) & ")"
pareil pour les autres lignes ;)
val etant une variable cd ton vba il faut la concaténer ;)
=>
ActiveCell.formulaR1C1="=SUM(R" & (Val-49)& ";R" & (val) & ")"
pareil pour les autres lignes ;)
val etant une variable cd ton vba il faut la concaténer ;)
met un worbook("nom").Activate avant ton code.. erreur 1004 c'est que la feuille n est pas active généralement ;)
bien sur change "nom" par le nom de ta feuille qui doit etre activé ;)
bien sur change "nom" par le nom de ta feuille qui doit etre activé ;)
worbook ne fonctionne. J'ai essayé comme ça:
Sheets("FACTURE").Activate
ActiveCell.FormulaR1C1 = "=SUM(R[-(Val-49)]C;R[-(val)C]"
et ça ne marche pas non plus!
Sheets("FACTURE").Activate
ActiveCell.FormulaR1C1 = "=SUM(R[-(Val-49)]C;R[-(val)C]"
et ça ne marche pas non plus!
Allez on essaye autre chose...
reprend ce code et rajoute ce qui est en gras
Dim Tot as Integer (si ta somme ne comporte que des entier sinon as simle si décimal)
For i = 14 To 61
if i<>47 then
For j = 10 To 17
If Sheets(j).Cells(i, 9) <> 0 Xor Sheets(j).Cells(i, 9) = " " Then
Sheets(j).Rows(i).Copy
Sheets("FACTURE").Select
Sheets("FACTURE").Rows(val).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValues, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Tot=Tot+Sheets("FACTURE").Cells(Val,10).value
val = val + 1
End If
Next j
end if
Next i
Sheets("FACTURE").Cells(Val,10)=Tot
reprend ce code et rajoute ce qui est en gras
Dim Tot as Integer (si ta somme ne comporte que des entier sinon as simle si décimal)
For i = 14 To 61
if i<>47 then
For j = 10 To 17
If Sheets(j).Cells(i, 9) <> 0 Xor Sheets(j).Cells(i, 9) = " " Then
Sheets(j).Rows(i).Copy
Sheets("FACTURE").Select
Sheets("FACTURE").Rows(val).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValues, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Tot=Tot+Sheets("FACTURE").Cells(Val,10).value
val = val + 1
End If
Next j
end if
Next i
Sheets("FACTURE").Cells(Val,10)=Tot
Juste au cas où... c'est "Tot as Single" si tu as des décimales...
il y avait une faute dans le message précédent
il y avait une faute dans le message précédent
salut, merci de réfléchir à mon probléme!!
Alors en applicant les changements g une erreur 13 sur la ligne :
Tot = Tot + Sheets("FACTURE").Cells(val, 10).Value
Alors en applicant les changements g une erreur 13 sur la ligne :
Tot = Tot + Sheets("FACTURE").Cells(val, 10).Value