Copier lignes d'1 feuille à une autre ss cond

Résolu
Pat 59 -  
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
A voir également:

55 réponses

jjsteing Messages postés 1803 Statut Contributeur 181
 
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
0
Pat_59 Messages postés 26 Statut Membre
 
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
0
jjsteing Messages postés 1803 Statut Contributeur 181
 
pour passer une formule en vba :

Cells(maligne,macolonne).Value = "=formulexl"

A noter que vba gere les formules en anglais..
0
ben13.51 Messages postés 115 Statut Membre 7
 
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)"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pat_59 Messages postés 26 Statut Membre
 
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
0
Pat_59 Messages postés 26 Statut Membre
 
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))"
0
jjsteing Messages postés 1803 Statut Contributeur 181
 
ActiveCell.value = "=SUM(J14:J(val-1))" ;)
0
Pat_59 Messages postés 26 Statut Membre
 
Non désolé ça ne change pas!!
0
ben13.51 Messages postés 115 Statut Membre 7
 
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]"
0
Pat_59 Messages postés 26 Statut Membre
 
J'ai un message d'erreur(erreur "1004")
0
ben13.51 Messages postés 115 Statut Membre 7
 
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
0
jjsteing Messages postés 1803 Statut Contributeur 181
 
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 ;)
0
Pat_59 Messages postés 26 Statut Membre
 
J'ai toujours cette erreur 1004.
0
jjsteing Messages postés 1803 Statut Contributeur 181
 
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é ;)
0
Pat_59 Messages postés 26 Statut Membre
 
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!
0
ben13.51 Messages postés 115 Statut Membre 7
 
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
0
ben13.51 Messages postés 115 Statut Membre 7
 
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
0
Pat_59
 
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
0
jjsteing Messages postés 1803 Statut Contributeur 181
 
t'es sur que ce n'est pas plutot :

Tot = Tot + Sheets("FACTURE").Cells(i, 10).Value ?

et

Sheets("FACTURE").Cells(i,10)=Tot ;)
0
Pat_59 Messages postés 26 Statut Membre
 
Mais en fait la on ne calcul pas ce qu'il y a dans la case tot
on nomme cette case mais il n'y a pas de formule?
Jme trompe peu être
0