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

ben13.51 Messages postés 115 Statut Membre 7
 
C'est bien Sheets("facture").cells(Val,10)
la variable i s'applique aux autres feuilles mais pas à celle là
je regarde à quoi correspond une erreur 13 et je te dit

et pour répondre à ta question...
Non on nomme pas la cellule
Je crée une variable
chaque foi que tu copies une ligne tu ajoute à cette variable le contenue la cellule colonne 10 de ta nouvelle ligne
A la fin de ta fonction la variable Tot doit avoir la valeur de la somme de ta colonne 10
Lance la sub une foi et vérifie manuellement avec la fonction somme d'excel si les résultats correspondent...
et dit moi ce qu'il en est
0
Pat_59 Messages postés 26 Statut Membre
 
ça ne foncionne pa j'ai cette erreur 13, donc je ne peus pas vérifier!!!
0
ben13.51 Messages postés 115 Statut Membre 7
 
chez moi ya pas d'erreur
keske il te dit quand il t'annonce erreur 13
et quelle ligne et surlignée en jaune??

essaye de mettre Tot = 0 juste sous le sub() avant le premier For
0
Pat_59 Messages postés 26 Statut Membre
 
Voila ce que j'ai comme code:

Dim val As Integer
val = 14
Dim Tot As Single
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

message d'erreur: erreur d'execution "13"
incompabilité de type
C cette ligne qui est en jaune: Tot = Tot + Sheets("FACTURE").Cells(val, 10).Value
0
jjsteing Messages postés 1803 Statut Contributeur 181
 
met dim Tot as integer au lieu de single ;)
0

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

Posez votre question
ben13.51 Messages postés 115 Statut Membre 7
 
Juste pour voir si ça change qqchose essaye d'enlever ce code et de relancé la fonction...

Selection.PasteSpecial Paste:=xlPasteFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False

Si c'es ça le problème fais ces modif...

Selection.PasteSpecial Paste:=xlPasteValues, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False

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

Selection.PasteSpecial Paste:=xlPasteFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
val = val + 1


Si ya tjs cette erreur essaye de m'envoyer ton fichier excel que je puisse essayer sur le vrai modèle
parce que les essais que j'ai fais de mon coté fonctionne bien...
0
Pat_59 Messages postés 26 Statut Membre
 
Nan toujours le même probléme
0
Pat_59 Messages postés 26 Statut Membre
 
Tu peus me donner ton adresse mail pour que je te l'envoi
0
ben13.51 Messages postés 115 Statut Membre 7
 
pas de problème
0
ben13.51 Messages postés 115 Statut Membre 7
 
préviens moi quand tu es revenu
0
Pat_59 Messages postés 26 Statut Membre
 
Tu comprend peu être mieu ce que je veus, non?
Ta une solution pour les sous totaux et total général?
0
ben13.51 Messages postés 115 Statut Membre 7
 
Allez c bon cette foi on l'a... voilà le code un peu modifié

Private Sub CommandButton14_Click()
Dim i As Integer
Dim j As Integer
Dim val As Integer
val = 14
Dim Tot As Single
For i = 14 To 61
If i <> 47 Then
For j = 10 To 17
If Sheets(j).Cells(i, 9).Value <> "" Then 'pas d'espace entre les guillemets...
If Sheets(j).Cells(i, 9).Value <> 0 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
End If
Next j
End If
Next i
Sheets("FACTURE").Cells(val, 10) = Tot

End Sub

Avec ça c bon
fais attention aussi ... dans ta colonne 9 (i) correspondant au nombre de jours certaine cellule sont au format monaitaire (0.00€) et écrite en blanc ...invisible sur fond blanc...donc faut les remettre en format standard sinon il ne verra pas qu'elle sont vide
Même problème avec certaine cellule de ta colonne 10
0
Pat_59 Messages postés 26 Statut Membre
 
Désolé je n'avait pas vu ton message!
Tu as quand même réussi à ouvrir le fichier?

Je ne comprend pas, je viens de tester avec le code que tu m'a donné mais j'ai toujours le probléme, erreur 13!!!
0
ben13.51 Messages postés 115 Statut Membre 7
 
regarde dans facture 1 colonne 9 ligne 44 et met 0 ou "" ou rien
en fait le double guillement correspond à cellule vide
tu n'as pas besoin de mettre ="" dans les cellules que tu veux laisser vide
tu n'as d'ailleur pas besoin de mettre 0 non plus...

si ça bug note le i, le j et le val que te donne vba (il suffit de mettre le curseur sur la variable quand tu as la ligne jaune de bug et il te donne sa valeur) et envoie les moi
0
Pat_59 Messages postés 26 Statut Membre
 
ça y'est c bon ça fonctionne, merci beaucoup!!!
En fait maintenan je vais utiliser ce code pour chaque sous partie et apré il fodrai que j'arrive a faire la somme des sous totaux, comme dans les facture 1 à 8.
0
ben13.51 Messages postés 115 Statut Membre 7
 
pour faire le total des sous toutaux tu nomme Tot11, Tot2...Tot3 les variables dans tes différentes fonctions
et à la fin de la dernière tu rajoute
avec bien sur Total as single
Total = Tot1 + Tot2...+Tot8
et tu choisi la cellule dans laquelle mettre ce résultat de la même manière que les tot
0
Pat_59 Messages postés 26 Statut Membre
 
C'est bon!!!!!!!!!!!
Merci pour tous!
Un peu de mise en page et ça sera bon.

Bonne continuation
0