Copier coller avec condition

Résolu/Fermé
Thlone - 2 févr. 2010 à 18:32
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 2 févr. 2010 à 23:46
Bonjour,
Je souhaiterai avoir une macro pour faire des copier coller avec conditions en automatique:
Voila le tableau d'origine
A B
27 01/12/10 01/12/10 1209-45

adj accrued expenses acct
6 12/18/09 12/18/09 1209-40

33 11/09/09 11/09/09 1009-57

25 11/05/09 11/05/09 1009-54

30 01/13/10 01/13/10 1209-59

36 11/09/09 11/09/09 1009-59

ADJ BAD DEBT EXPENSE

Et voila ce a quoi je voudrais aboutir en automatique
A B
27 01/12/10 01/12/10 1209-45
27 01/12/10 01/12/10 1209-45
27 01/12/10 01/12/10 1209-45
6 12/18/09 12/18/09 1209-40
6 12/18/09 12/18/09 1209-40
33 11/09/09 11/09/09 1009-57
33 11/09/09 11/09/09 1009-57
25 11/05/09 11/05/09 1009-54
25 11/05/09 11/05/09 1009-54
30 01/13/10 01/13/10 1209-59
30 01/13/10 01/13/10 1209-59
36 11/09/09 11/09/09 1009-59
36 11/09/09 11/09/09 1009-59
36 11/09/09 11/09/09 1009-59
36 11/09/09 11/09/09 1009-59

En gros on copie les deux premieres cellules de la premiere ligne (ex : Cell 1:27 Cell : 01/12/10 01/12/10 1209-45) jusqu'a ce que la cellule de la premiere colonne ne soit plus vide. Peu importe ce qu'il y a dans la colonne B le test se faisant sur la colonne A tant que c'est vide on recopie.

Merci de votre reponse cela m'evitera tous les mois de faire 50 mille fois ctrl C/ctrl V.
A voir également:

6 réponses

eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 248
2 févr. 2010 à 19:54
Bonjour,

Je pense que c'est qcq chose ça que tu veux :
Sub recopie()
    Dim c As Range
    For Each c In Range([A2], [A65536].End(xlUp))
        If c = "" Then
            c.Offset(-1, 0).Resize(1, 2).Copy (c)
        End If
    Next c
    End Sub
End Sub

Sélectionner la feuille concernée et lancer la macro

eric
0
Bonjour Merci de ta reponse mais comme je suis debutant en macro je ne vois pas du tout comment la "parametrer" pour l'adapter a mon fichier comme par exemple dois-je remplacer "c" par quelque chose?
Car sinon j'ai toujours une erreur.

Merci encore de ton aide
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 248
2 févr. 2010 à 20:45
Il n'y a rien à paramétrer sauf si tu ne veux pas traiter la colonne entière.
Si tu ne veux traiter que la partie sélectionnée en colonne A remplace:
For Each c In Range([A2], [A65536].End(xlUp
par:
for each c in selection

Elle marche sur toute feuille sélectionnée, même d'un autre classeur. Si tu travailles toujours le même classeur tu la mets dedans, sinon tu peux la mettre dans un autre et ouvrir celui-ci quand tu en as besoin.

Pour l'ajouter :
- Alt+F11 pour ouvrir l'éditeur vba
- clic-droit sur le projet à gauche
- insertion / module
- coller le code à droite

Quand tu la lances par Alt+F8 dans les propriétés tu peux définir un raccourci clavier
0
Merci mais ca doit etre moi le probleme, je vais ouvrir un livre de VBA car a chaque fois j'ai le debogueur qui se lance et me surligne en jaune la ligne c.Offset(-1, 0).Resize(1, 2).Copy (c).
Mais bon en fait il faut que je rajoute quelque chose car le test logique se situe dans la colonne A mais il faut egalement que je recopie en meme temps ce qu'il y a dans la colonne B.
Par exemple si j'ai ca sur trois colonnes:
18 01/08/10 01/08/10 1209-25 30-03-6081-90
30-03-2407
ADJ BAL TO MATCH BCSAS 30-03-6081-90
30-03-2408
30-03-8304-90
30-03-2323
30-03-6081-90
30-03-2323
23 02/11/09 02/11/09 0109-39 30-03-6080-90
30-03-1012
Je voudrais obtenir ca a la fin:
18 01/08/10 01/08/10 1209-25 30-03-6081-90
18 01/08/10 01/08/10 1209-25 30-03-2407
18 01/08/10 01/08/10 1209-25 30-03-6081-90
18 01/08/10 01/08/10 1209-25 30-03-2408
18 01/08/10 01/08/10 1209-25 30-03-8304-90
18 01/08/10 01/08/10 1209-25 30-03-2323
18 01/08/10 01/08/10 1209-25 30-03-6081-90
18 01/08/10 01/08/10 1209-25 30-03-2323
23 02/11/09 02/11/09 0109-39 30-03-6080-90
23 02/11/09 02/11/09 0109-39 30-03-1012

En effacant au passage "ADJ BAL TO MATCH BCSAS" que je ne veux plus.

Si tu penses pouvoir le reproduire assez rapidement je suis preneur mais sinon je vais chercher...
Bon en fait je te demande vraiment ton aide ;)
Merci d'avance.
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 248
2 févr. 2010 à 21:57
ca doit etre moi le probleme
Pas tout à fait, j'avais testé avec le code sur la feuille, mais mis dans un module pour pouvoir être exécuté sur n'importe quelle feuille il faut changer la syntaxe.

il faut que je rajoute quelque chose car le test logique se situe dans la colonne A mais il faut egalement que je recopie en meme temps ce qu'il y a dans la colonne B.
non non, ça le fait avec le .resize

En effacant au passage "ADJ BAL TO MATCH BCSAS" que je ne veux plus.
Effacer ou supprimer les 2 cellules ?
J'ai choisi la 2nde option. Sinon echange avec la ligne en commentaire

Pour que tu puisses tester si c'est vraiment ça que tu voulais : Thlone.xls
0
Le test marche super bien sauf pour le "ADJ BAL TO MATCH BCSAS" en fait sur la deuxieme colonne il faut remplacer ou copier dessus ce que l'on copie de la premiere ligne.
J'ai ajoute ca car je ne savais pas si avec la macro quand tu recopies dans les nouvelles cellules si l'une d'entre elles n'eatait pas vde ce la marcherait.
En fait la premiere ligne fait reference et doit etre recopier jusqu'a la nouvelle reference peu importe s'il y a quelque chose en dessous dans la deuxieme colonne.
Je ne sais pas si je suis clair. Mais en tout cas encore un grand merci.

Voila l'exemple http://www.cijoint.fr/cjlink.php?file=cj201002/cijdbyvwdl.xls
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 248
2 févr. 2010 à 22:57
à voir ton fichier j'ai plutôt l'impression que c'est la colonne C qu'il faut prendre en référence si tu veux que les dernières lignes soient remplies.
Thlone.xls
0
La colonne c est juste en reference mais ce sont des donnees aleatoires donc je ne vois pas du tout comment y appliquer un test logique.
Tu sais si sur un fichier de 35 mille lignes je dois faire un copie paste pour la fin du fichier ca me va parfaitement.
Tu as reussi a simuler quelque chose sur cette base meme si la derniere ligne ne se copie pas.
En fin je pense plutot que d'apres l'algorythme elle se copiera jusqu'a la fin (car tout est vide apres) sauf a definir exactement la plage de donnee comme tu me l'as conseille plutot.
0

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

Posez votre question
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 248
2 févr. 2010 à 23:23
Teste l'exemple du post 7 basé sur colonne C et dis si c'est ok
0
Ca marche super un grand MERCI pour cette contribution.
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 248
2 févr. 2010 à 23:46
ok, n'oublie pas de mettre en résolu...
0