Copier valeur dans la première cellule vide dune ligne

Résolu/Fermé
kgigant
Messages postés
202
Date d'inscription
lundi 21 mars 2011
Statut
Membre
Dernière intervention
8 janvier 2014
- Modifié par kgigant le 18/04/2013 à 15:22
kgigant
Messages postés
202
Date d'inscription
lundi 21 mars 2011
Statut
Membre
Dernière intervention
8 janvier 2014
- 22 avril 2013 à 19:14
Bonjour,

Une fois de plus je dois faire appel à votre savoir faire !

Je voudrai savoir comment obtenir une macro qui me fais un couper coller des valeurs de la feuil2 à la feuil1 (jusque là rien de bien compliqué), cependant ces valeurs iront chacune dans une ligne spécifique à la suite des autres valeurs que j'aurais déjà importé grâce à cette macro.

Exemple : en feuil2 cellule D8 j'ai un nom que j'aimerai importer à la suite des autres noms feuil1 ligne14


Merci de votre aide

16 réponses

kgigant
Messages postés
202
Date d'inscription
lundi 21 mars 2011
Statut
Membre
Dernière intervention
8 janvier 2014
10
19 avril 2013 à 08:11
mon énoncé n'est pas clair ?
0
kgigant
Messages postés
202
Date d'inscription
lundi 21 mars 2011
Statut
Membre
Dernière intervention
8 janvier 2014
10
22 avril 2013 à 07:59
SVP
0
Mike-31
Messages postés
17975
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
27 juin 2022
4 959
22 avril 2013 à 08:26
Salut,

Effectivement pas très clair, mais pour coller à la suite sur la feuille nommée
Feuil1 en prenant référence sur la colonne A

Sheets("Feuil1").Activate 'sélectionne la feuille du transfert
Range("A65000").End(xlUp).Offset(1).Select 'recherche la première cellule vide
ActiveSheet.Paste 'copie les données
0
kgigant
Messages postés
202
Date d'inscription
lundi 21 mars 2011
Statut
Membre
Dernière intervention
8 janvier 2014
10
22 avril 2013 à 08:46
Bonjour et merci de ton aide

je vais essayer d'être plus clair,

Ce que je recherche c'est copier la cellule D8 de la feuil2 en cellule B14 de la feuil1.
Puis à chaque fois que j'execute la macro j'aimerai quelle me colle la valeur de D8 feuil2 en C14, puis D14, puis E14... de la feuil1.

la macro doit copier la valeur de D8 feuil2 et la coller en feuil1 ligne 14 dans la première cellule non vide.

désolé c'est jamais évident d'expliquer son problème.

Merci
0

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

Posez votre question
Mike-31
Messages postés
17975
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
27 juin 2022
4 959
Modifié par Mike-31 le 22/04/2013 à 10:01
Re,

Si tu utilises un bouton ActiveX, on peut rechercher depuis la colonne DZ ligne 14 la première cellule non vide et on colle la valeur de la Feuil2

Private Sub CommandButton1_Click()
Sheets("Feuil1").Range("DZ14").End(xlToLeft)(1, 2) = Sheets("Feuil2").Range("D8")
End Sub

Si c'est ce que tu cherches on peut simplifier la ligne, tu nommes la cellule cible D8 Feuil2 par exemple nommée titi

Sheets("Feuil1").[DZ14].End(xlToLeft)(1, 2) = [titi]

mais si tu nommes également la cellule de départ du balayage Feuil1 ligne 14 dans l'exemple DZ14 mais pourrait être la cellule de la dernière colonne XFD14 et nommée toto

la ligne de code se résume à

[toto].End(xlToLeft)(1, 2) = [titi]

il faudrait peut être effacer la cellule Sheets("Feuil2").Range("D8") après l'exécution de la macro pour éviter le collage en doublon
en ajoutant cette ligne
Sheets("Feuil2").Range("D8") .clearcontents
ou si cellule nommée
[titi].clearcontents



A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
kgigant
Messages postés
202
Date d'inscription
lundi 21 mars 2011
Statut
Membre
Dernière intervention
8 janvier 2014
10
22 avril 2013 à 10:18
Re,

J'ai essayé ton code je n'arrive pas à le faire correctement fonctionner mais le peu que j'ai réussi me prouve que c'est la solution que je cherche.

Je n'arrive pas à faire le lien entre copier la valeur et aller la coller
0
Mike-31
Messages postés
17975
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
27 juin 2022
4 959
22 avril 2013 à 10:23
Re,

regarde le fichier joint

https://www.cjoint.com/c/CDwkxthTRJK
0
kgigant
Messages postés
202
Date d'inscription
lundi 21 mars 2011
Statut
Membre
Dernière intervention
8 janvier 2014
10
22 avril 2013 à 10:48
Je regarderai ce soir je peux pas l'ouvrir pour visualiser le code ici.
Je te retiens au courant, merci d'avance
0
Mike-31
Messages postés
17975
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
27 juin 2022
4 959
22 avril 2013 à 10:52
Re,

Pas de problème je serais la mais assez tard dans la soirée
0
kgigant
Messages postés
202
Date d'inscription
lundi 21 mars 2011
Statut
Membre
Dernière intervention
8 janvier 2014
10
22 avril 2013 à 11:54
Je vais prendre un peu d'avance en attendant ce soir, dans la formule :

Sheets("Feuil1").Range("DZ14").End(xlToLeft)(1, 2) = Sheets("Feuil2").Range("D8")

qu'est ce qu'il faut rajouter pour garder la mise en forme de la cellule source ?

J'ai essayé de le faire avec l'enregistreur de macro puis de rajouter le code à la suite mais ca ne fonctionne pas.
0
Mike-31
Messages postés
17975
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
27 juin 2022
4 959
22 avril 2013 à 12:36
Re,

dans ton module Visual Basic colle ce code et associe le à un bouton

sub test ()
Sheets("Feuil1").Range("DZ14").End(xlToLeft)(1, 2) = Sheets("Feuil2").Range("D8")
end if
0
kgigant
Messages postés
202
Date d'inscription
lundi 21 mars 2011
Statut
Membre
Dernière intervention
8 janvier 2014
10
22 avril 2013 à 14:14
ok ca fonctionne mais admettons que ma case en D8 a une mise en forme spécifique, j'aimerais garder cette mise en forme lorsque je la colle en Feuil1, je dois rajouter un bout de code nn ? je n'arrive pas à le faire avec l'enregistreur de macro.

Merci encore
0
Mike-31
Messages postés
17975
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
27 juin 2022
4 959
22 avril 2013 à 14:52
Re,

Voila le code

Sheets("Feuil2").Range("D8").Copy
Sheets("Feuil1").Range("DZ14").End(xlToLeft)(1, 2).Select
ActiveSheet.Paste
0
kgigant
Messages postés
202
Date d'inscription
lundi 21 mars 2011
Statut
Membre
Dernière intervention
8 janvier 2014
10
22 avril 2013 à 14:58
ok c'est bien ce qui me semblait on doit repasser avec le code copy, mais je retombe sur le même problème que j'avais, j'ai une erreur de macro à la deuxième ligne alors que je ne vois pas d'erreur.

Tu as fais un essai toi ? ca fonctionne ?
0
kgigant
Messages postés
202
Date d'inscription
lundi 21 mars 2011
Statut
Membre
Dernière intervention
8 janvier 2014
10
22 avril 2013 à 15:03
J'ai trouvé un moyen pour que ca fonctionne mais ça rajoute des lignes pour rien je pense :

Sheets("Feuil2").Range("D8").Copy
Sheets("Feuil1").Select
Sheets("Feuil1").Range("DZ14").End(xlToLeft)(1, 2).Select
ActiveSheet.Paste
0
Mike-31
Messages postés
17975
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
27 juin 2022
4 959
Modifié par Mike-31 le 22/04/2013 à 15:17
Re,

Contrôle bien le nom de ton onglet, pas d'intervalle, il doit y avoir un problème à ce niveau différence de nom
complète ton code comme ceci

Sheets("Feuil2").Range("D8").Copy
Sheets("Feuil1").Activate
Sheets("Feuil1").Range("DZ14").End(xlToLeft)(1, 2).Select
ActiveSheet.Paste
Application.CutCopyMode = False


mais si la commande se fait depuis la Feuil1 tu n'as pas besoin de cette ligne

Sheets("Feuil1").Activate

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
kgigant
Messages postés
202
Date d'inscription
lundi 21 mars 2011
Statut
Membre
Dernière intervention
8 janvier 2014
10
22 avril 2013 à 17:26
Suite à toutes tes réponse j'ai réussi à faire ce que je souhaitai, le dernier point consiste si tu à le temps à allèger la macro, je pense que quelques lignes peuvent remplacer mes 100 lignes (j'ai recopier 26 fois le meme code....)

je te mets le lien de mon fichier (modifié pour des raison de confidentialité)

https://www.cjoint.com/?3DwrAdgr9hn

Merci encore pour ton aide et ta disponibilité
0
Mike-31
Messages postés
17975
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
27 juin 2022
4 959
22 avril 2013 à 17:52
Re,

ce qui pose problème sont les formats sinon chaque module de 4 lignes pourrait se limiter à 1 ligne,
on pourrait utiliser la syntaxe With ou faire une boucle ce qui limiterait chaque module à 2 lignes, je regarde mais tard dans la soirée ce qui peut être fait
0
kgigant
Messages postés
202
Date d'inscription
lundi 21 mars 2011
Statut
Membre
Dernière intervention
8 janvier 2014
10
22 avril 2013 à 19:14
ok merci beaucoup
0