Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Copier-coller par macro

24 réponses
Avatar
Sunburn
Bonjour,
je souhaite automatiser une tache.
voici mon classeur exemple :
http://cjoint.com/?bymQpMYlxz
(ne pas tenir compte du nombre de ligne en "GA14", je vais augmenter le
nombre de ligne, pour que mes traitements futur fonctionnent).

je voudrais une macro qui me permette de passer de "Bal2" à "GA14", avec les
besoins ci-après :
- macro qui fonctionne sur mon onglet "GA14", (la procédure viendra avant la
procédure pour le bouton existant)
- de "Bal2" A3 à la dernière ligne, copie-colle en "GA14" C12 (collage
valeur uniquement) **(colonne A référence pour le nombre de ligne à
copier-coller)
- de "Bal2" B3à la dernière ligne de la colonne A, copie-colle en "GA14" H12
(collage valeur uniquement)
- de "Bal2" D3 à la dernière ligne de la colonne A, copie-colle en "GA14"
E12 (collage valeur uniquement)
- de "Bal2" E3 à la dernière ligne de la colonne A, copie-colle en "GA14"
F12 (collage valeur uniquement)

Comment puis-je faire ??
Merci.
YANN

10 réponses

1 2 3
Avatar
FFO
Salut à toi

Je te propose ce code :

Lignes = Sheets("Bal2").Range("A65535").End(xlUp).Row - 2
Sheets("GA14").Range("C12", "C" & 12 + Lignes).Value =
Sheets("Bal2").Range("A3", "A" & 3 + Lignes).Value
Sheets("GA14").Range("H12", "H" & 12 + Lignes).Value =
Sheets("Bal2").Range("B3", "B" & 3 + Lignes).Value
Sheets("GA14").Range("E12", "E" & 12 + Lignes).Value =
Sheets("Bal2").Range("D3", "D" & 3 + Lignes).Value
Sheets("GA14").Range("F12", "F" & 12 + Lignes).Value =
Sheets("Bal2").Range("E3", "E" & 3 + Lignes).Value


Celà devrait convenir

Dis moi !!!
Avatar
Sunburn
Ok, je te remercie, ça fonctionne nikel.
par contre, concernant notre post d'avant sur ma "balance live" avec mes
onglets GA10,..., Bal2
je ne sais pas si c'est pareil chez toi, mais moi, j'ai des bordures sur la
fin de mon onglet "Bal2".
comment faire pour ne pas avoir de bordures ?
j'ai essayé ça à la fin de la macro mais ça plante :
Merci.

-----
Sheets("Bal2").Select
Columns("A:G").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
------
Avatar
Sunburn
re,
après un test, en fait, j'ai un petit soucis.
dans mon onglet GA14, il ne me faudrait que des lignes ou il y a, soit un
debit, soit un credit.
Donc, il faudrais qu'on puisse mettre vide la colonne C si les colonnes E et
F sont vides, puis trier par ordre croissant de C à H par la colonne C en
ordre croissant.
est-ce possible ??

De plus, pour un compte (le 616000), j'ai un chiffre au debit et un au
credit ...
voici le lien, car je ne vois pas pourquoi.
http://cjoint.com/?byobMpOJ2G

Merci.
YANN
Avatar
FFO
Rebonjour à toi

Effectivement je le savais
Mais comme je ne connaissais pas la présentation que tu comptais mettre sur
l'onglet je n'ai pas essayé de le corriger

Tu as 2 solutions

Soit tu réalises un quadrillage pour soigner l'aspect de la feuille auquel
cas celui intempestif se confondra avec et donc ne se verra pas
Soit tu rajoutes en fin du code ces lignes :

Sheets("Bal2").Cells.Borders(xlDiagonalDown).LineStyle = xlNone
Sheets("Bal2").Cells.Borders(xlDiagonalUp).LineStyle = xlNone
Sheets("Bal2").Cells.Borders(xlEdgeLeft).LineStyle = xlNone
Sheets("Bal2").Cells.Borders(xlEdgeTop).LineStyle = xlNone
Sheets("Bal2").Cells.Borders(xlEdgeBottom).LineStyle = xlNone
Sheets("Bal2").Cells.Borders(xlEdgeRight).LineStyle = xlNone
Sheets("Bal2").Cells.Borders(xlInsideVertical).LineStyle = xlNone
Sheets("Bal2").Cells.Borders(xlInsideHorizontal).LineStyle = xlNone

C'est un peu lourd et effacera tout quadrillage de la feuille

Une autre solution consisterait à ne pas ramener le format émanant des
autres feuilles
Celà nécessite de modifier le code de recopie et donc de l'alourdir quelque
peu

A toi de voir

Tiens moi informé
Avatar
FFO
Rebonjour à toi

De quel code tu parles ????

Celui que je t'ai proposé sur ce fil (Copier-coller par macro) ou celui de
l'autre fil


"De plus, pour un compte (le 616000), j'ai un chiffre au debit et un au
credit ..."

Tout à fait normal :
un vient de l'onglet "GA10" (Débit) l'autre de l'onglet "GA11" (Crédit)

Regardes bien !!!!
Avatar
Sunburn
re,
alors, excuse moi,je me melange peut etre :

1/ la macro "traitement" qui permet de remplir "Bal2" à partir de GA10 et
plus.
par cette macro, je souhaite une balance actualisée.
par contre, il ne faudrait que soit la colonne D est remplie, soit la
colonne F (le debit ou le credit). il ne me faut pas 2 montants sur la meme
ligne (sinon ça plante pour mon logiciel de compta).

2/ pour le copier-coller de "Bal2" vers "GA14", je ne voudrais que les
comptes pour lesquels il existe une donnée en colonne D ou colonne E, afin de
ne pas avoir de lignes vierge dans "GA14".

est-ce possible, et suis-je moins cafouilli ??? :'((

Merci.
YANN
Avatar
FFO
Rebonjour à toi

"par cette macro, je souhaite une balance actualisée."

Peux tu préciser !!!!

"par contre, il ne faudrait que soit la colonne D est remplie, soit la
colonne F (le debit ou le credit). il ne me faut pas 2 montants sur la meme
ligne (sinon ça plante pour mon logiciel de compta)."

Sur quel critère faire le choix ????


"pour le copier-coller de "Bal2" vers "GA14", je ne voudrais que les
comptes pour lesquels il existe une donnée en colonne D ou colonne E, afin de
ne pas avoir de lignes vierge dans "GA14". "

Je te propose ce code :

Sheets("GA14").Range("C12", "H" &
Sheets("GA14").Range("C65535").End(xlUp).Row).ClearContents
i = 3
Do While i < Sheets("Bal2").Range("A65535").End(xlUp).Offset(1, 0).Row
If Sheets("Bal2").Range("D" & i) <> "" Or Sheets("Bal2").Range("E" & i) <>
"" Then
Sheets("GA14").Range("C65535").End(xlUp).Offset(1, 0).Value =
Sheets("Bal2").Range("A" & i).Value
Sheets("GA14").Range("C65535").End(xlUp).Offset(0, 5).Value =
Sheets("Bal2").Range("B" & i).Value
Sheets("GA14").Range("C65535").End(xlUp).Offset(0, 2).Value =
Sheets("Bal2").Range("D" & i).Value
Sheets("GA14").Range("C65535").End(xlUp).Offset(0, 3).Value =
Sheets("Bal2").Range("E" & i).Value
End If
i = i + 1
Loop

Si il répond à ta dernière demande il est d'un traitement plus long que le
précédent

Tout dépend du nombre de lignes à traiter

La première ligne de code nettoie l'onglet "GA14" des données présentes :

Sheets("GA14").Range("C12", "H" &
Sheets("GA14").Range("C65535").End(xlUp).Row).ClearContents


A toi de voir si celà t'interesse donc de la concerver ou non

Fais des essais et dis moi !!!!
Avatar
Sunburn
Re,
"par cette macro, je souhaite une balance actualisée."
Peux tu préciser !!!!






Donc j'ai ma balance en GA10.
des ecritures en GA11, GA12, et GA13
Donc je voudrais une balance, qui prenne en compte mes modifications faites
par les écritures.
Donc en "Bal2", je dois avoir l'intégralité de mes comptes utilisés dans
"GA10 & 11 & 12 & 13".
de plus, le libellé (j'avais oublié de te le dire je crois) reprend en
priorité le libellé de GA10, mais si le compte n'existe pas dans GA10, alors
il peut reprendre le libellé du compte dans les GA11 & 12 & 13.
De plus, chaque compte doit avoir un montant unique, POSITIF, donc soit en
débit, soit en credit (pas de moins).

"par contre, il ne faudrait que soit la colonne D est remplie, soit la
colonne F (le debit ou le credit). il ne me faut pas 2 montants sur la meme
ligne (sinon ça plante pour mon logiciel de compta)."
Sur quel critère faire le choix ????







faire l'écart, mais il faut que ça soit positif, donc si somme des DEBIT
pour 1 compte > somme des CREDIT, alors chiffre au DEBIT, sinon CREDIT

"pour le copier-coller de "Bal2" vers "GA14", je ne voudrais que les
comptes pour lesquels il existe une donnée en colonne D ou colonne E, afin de
ne pas avoir de lignes vierge dans "GA14". "

Je te propose ce code :






Je test et je te dis.

Merci
YANN
Avatar
FFO
Rebonjour à toi

Celà devient particulièrement compliqué !!!!

Je te propose une nouvelle mouture intégrant les conditions pour les
libellés sur ce lien
J'ai rajouté la macro de recopie en onglet "GA14" qui ne peux fonctionner
correctement que si tu rajoutes une colonne à l'onglet "Bal2" (cet onglet à
évolué sur ta dernière demande par l'ajout d'une colonne qui n'éxistait pas
dans les fichiers précédents) :

http://www.cijoint.fr/cjlink.php?file=cj200901/cijSEN0CEy.xls

"faire l'écart, mais il faut que ça soit positif, donc si somme des DEBIT
pour 1 compte > somme des CREDIT, alors chiffre au DEBIT, sinon CREDIT"

Dans quel onglet : "Bal2" ou "GA14"

Merci de préciser

Donne moi des nouvelles !!!!
Avatar
Sunburn
> http://www.cijoint.fr/cjlink.php?file=cj200901/cijSEN0CEy.xls


je test ce matin

"faire l'écart, mais il faut que ça soit positif, donc si somme des DEBIT
pour 1 compte > somme des CREDIT, alors chiffre au DEBIT, sinon CREDIT"

Dans quel onglet : "Bal2" ou "GA14"
Merci de préciser



dans "Bal2", je ne voudrais que le solde (DEBIT ou CREDIT).

MERCI.
YANN
1 2 3