Copier coller un tableau dont la longueur varie VBA

Fermé
AnalystUK Messages postés 9 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 15 mai 2013 - 14 mai 2013 à 12:00
Mike-31 Messages postés 18316 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 - 15 mai 2013 à 13:26
Bonjour à tous,

Il s'agit de ma première publication. J'utilise beaucoup excel au quotidien mais aujourd'hui je cherche à faire quelque chose qui nécessite selon moi VBA. Je n'ai jamais utilisé VBA, mais j'ai fait Centrale Lyon et donc de la programmation donc je devrais pouvoir comprendre comment ca marche.

Bref, voici mon probleme. J'ai un tableau dans la feuille "New Joiners" qui représente la liste des nouveaux clients potentiels. Le nombre de clients que j'aimerais selectionner dépend des hypothèses de mon modèle et donc le nombre de lignes que j'aimerais selectionner varie en fonction d'une variable qui est dans une autre feuille appelée "Input".
Ce que j'aimerais c'est sélectionner mon tableau qui s'étend de C5 à E5 jusqu'à C(5+variable) et E(5+variable). Mon tableau serait donc C5:E(5+variable) et j'aimerais le coller à la suite d'un tableau dans le feuille "Total".

Je pense qu'il faut que je crée une macro sur VBA, mais je ne sais pas du tout quel code insérer et comment fonctionne VBA une fois que j'ai ouvert ma macro sur excel.
Je cherche donc quelqu'un qui puisse aider une débutante à faire son premier code et à poursuivre l'analyse de son modèle.

Merci d'avance pour votre aide!
A voir également:

8 réponses

Mike-31 Messages postés 18316 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 076
14 mai 2013 à 15:27
Salut,

Dans ta feuille appelée "Input", dans quelle cellule se trouve la valeur que tu dois ajouter à ta cellule C5 pour déterminer la dernière ligne à copier. Cette valeur est elle alphanumérique
0
AnalystUK Messages postés 9 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 15 mai 2013
14 mai 2013 à 15:29
Bonjour Mike,

Merci de prendre le temps de m'aider. Oui il s'agit d'une valeur numérique qui est pour le moment 74000.

Merci encore pour ton aide,

D
0
Mike-31 Messages postés 18316 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 076
Modifié par Mike-31 le 14/05/2013 à 15:39
Re,

wouah 74000, donc tu veux copier C5:E74005 c'est bien cela

et quel l'adresse de cette cellule feuille "Input"

ce E74005 est elle la dernière cellule de ton tableau

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
AnalystUK Messages postés 9 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 15 mai 2013
14 mai 2013 à 15:42
Haha, oui exactement. Elle se trouve en C11 dans la feuille input.

Pour etre plus claire je vais t'expliquer ce que j;essaye de faire. Je veux simplifier le programme de fidelite de ma boite. A l'heure actuelle il y a deux types de programmes, on veut melanger les deux pour en faire un seul et unique et en faciliter l'acces pour attirer des nouveaux membres.
J;ai donc trois feuilles avec une feuille par programme existant et une feuille avec la liste des clients frequents dans laquelle je veux extraire uniquement une certaine partie en fonction de mes hypotheses.
Je veux ensuite faire un tableau dans la feuille "Total" ou j;ai les informations du premier programme a la suite les info du deuxieme et ensuite celles des nouveaux clients.
Comme mes hypotheses peuvent varier j'aimerais pouvoir coller a la fin les données des nouveaux clients mais pouvoir les faire varier en fonction de ma variable en C11 dans Input.

J'espere que c'est clair et que ca te permet de voir ce que je veux faire.

Merci encore,

D
0
Mike-31 Messages postés 18316 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 076
14 mai 2013 à 16:04
Re,

Je crois avoir compris, feuille Input cellule C11 tu saisis exemple 100 ce qui va te permettre de copier de la feuille nommée Feuil1 par exemple les cellule C5 à E105 d'une plage de données qui est plus importante

c'est cela
0
AnalystUK Messages postés 9 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 15 mai 2013
14 mai 2013 à 16:22
C'est exactement cela. Et apres je veux la copier dans un tableau qui representera tous mes membres potentiels de mon futur programme de fidelite.

Merci Mike,

D
0
Mike-31 Messages postés 18316 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 076
14 mai 2013 à 16:27
RE,

Ok je t'écris un code dans la soirée, comment se nomme l'onglet ou se trouvent tes données à copier et le nom de l'onglet sur lequel les données seront copiées

la Feuille Input si j'ai bien compris est la feuille de pilotage sur lequel le bouton sera créé et ou se trouve la cellule C11 qui détermine la hauteur de la plage à copier
0
AnalystUK Messages postés 9 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 15 mai 2013
14 mai 2013 à 16:33
Merci beaucoup Mike!

Faut il absolument que je copie mes données dans une feuille vierge puis dans la feuille ou je veux le tableau avec tous les membres ou est ce possible de copier directement a la suite du tableau avec les membres des deux programmes?
S'il faut une etape intermediaire alors je créerai une feuille appelée Data New Joiners et la destination finale des data s'appelle Data Total.

Merci beaucoup pour ton aide,

D
0
AnalystUK Messages postés 9 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 15 mai 2013
14 mai 2013 à 16:34
Et c'est exactement ca pour la feuille Input.
0

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

Posez votre question
Mike-31 Messages postés 18316 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 076
14 mai 2013 à 21:43
Re,

Voila le code à coller dans un module et associer à un bouton

Sub test()
Sheets("Feuil2").Select
Range(Range("C5"), Range("E" & Sheets("Input").Range("C11"))).Copy
Sheets("Data Total").Activate
Range("A65536").End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End Sub

ce code copie la plage de la feuille nommée Feuil2 (ne connaissant pas le nom de cette feuille) définie par la cellule C11 de la feuille Input
et colle directement à la suite des données feuille nommée Data Total
0
AnalystUK Messages postés 9 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 15 mai 2013
15 mai 2013 à 11:25
Bonjour Mike,

Merci pour ton aide. J'ai créé une macro mais en rentrant ton code, ca me met Run-time error '1004'
Method 'Range' of object '_Global' failed.
Apparemment l'erreur vient de la troisieme ligne.

As tu une idée de ce que je peux faire pour debuger le code?

Merci mille fois!
0
Mike-31 Messages postés 18316 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 076
15 mai 2013 à 12:12
Re,
quelle ligne se met en jaune,
celle ci
Range(Range("C5"), Range("E" & Sheets("Input").Range("C11"))).Copy

ou celle ci
Sheets("Data Total").Activate
0
AnalystUK Messages postés 9 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 15 mai 2013
15 mai 2013 à 12:16
Celle qui commence par Range.
0
AnalystUK Messages postés 9 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 15 mai 2013
15 mai 2013 à 12:31
Ah j'ai trouvé l'erreur! En gros c'etait parce que en C11, ma valeur est obtenue en faisant la moyenne de deux valeurs donc j'avais C11=(C9+C10)/2.
Dois je obligatoirement avoir uniquement une valeur ou est ce possible de conserver C11 en tant que moyenne de deux valeurs?

Enfinca m'a collé mon tableau au debut de mon onglet Data Total alors qu'il y avaitdeja des données dans ce tableau. Est ce que tu penses que c'est possible de le coller a la fin du tableau?

Merci beaucoup c'est super!!
0
Mike-31 Messages postés 18316 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 076
15 mai 2013 à 12:23
Re,

Bizarre, il n'y a rien qui puisse bloquer, dans ta cellule C11 de la feuille Imput tu as bien une valeur, c'est cette valeur qui détermine la hauteur de la plage à copier
0
Mike-31 Messages postés 18316 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 076
15 mai 2013 à 13:26
Re,

tu peux utiliser la formule mais le problème sont les décimales, si la moyenne tombe un chiffre entier pas de problème, mais si la moyenne à des décimales il est impossible de sélectionner une fraction de ligne ou tu complètes la formule pour avoir une valeur entière pour sélectionner une ligne supplémentaire et le code fonctionnera

Au passage ta formule =(C9+C10)/2 donne la moyenne, tu pourrais écrire comme cela =MOYENNE(C9:C10)
0