Macro: Copier Coller X fois, X étant un nombre dans une cellule
Résolu/Fermé
Koalacid
Messages postés
70
Date d'inscription
vendredi 5 septembre 2014
Statut
Membre
Dernière intervention
8 mars 2016
-
18 janv. 2016 à 17:56
Koalacid Messages postés 70 Date d'inscription vendredi 5 septembre 2014 Statut Membre Dernière intervention 8 mars 2016 - 19 janv. 2016 à 16:24
Koalacid Messages postés 70 Date d'inscription vendredi 5 septembre 2014 Statut Membre Dernière intervention 8 mars 2016 - 19 janv. 2016 à 16:24
A voir également:
- Fois copier coller
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro word - Guide
- Jitbit macro recorder - Télécharger - Confidentialité
- Macro logiciel - Télécharger - Organisation
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
2 réponses
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 716
18 janv. 2016 à 22:51
18 janv. 2016 à 22:51
Bonjour,
un truc qui, s'il a la gentillesse de ne pas m'afficher un signal d'erreur, ne me fait rien du tout,
Ton truc n'était pas si loin que cela de la solution mais la programmation n'a pas beaucoup de gentillesse ;-)
Essaie de ne pas utiliser les "select" qui ne servent pas souvent et surchargent le traitement.
un truc qui, s'il a la gentillesse de ne pas m'afficher un signal d'erreur, ne me fait rien du tout,
Ton truc n'était pas si loin que cela de la solution mais la programmation n'a pas beaucoup de gentillesse ;-)
Sub COPIER_COLLER_PLS_FOIS() Dim x As Integer Dim Cpt As Integer With Sheets("BlaBla1") x = .Range("D4").Value .Range("C6:C20").Copy End With With Sheets("BlaBla2") For Cpt = 1 To x .Paste Destination:=.Range("B4").Offset(0, Cpt) Next Cpt End With End Sub
Essaie de ne pas utiliser les "select" qui ne servent pas souvent et surchargent le traitement.
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 716
19 janv. 2016 à 14:16
19 janv. 2016 à 14:16
Bonjour,
Que signifie le critère Columns.Count
c'est le nombre total de colonnes du classeur.
Autre chose, j'ai remarqué que si je lancais la macro
parce que tu n'a pas utilisé le with que je t'avais mis.
j'ai fait rajouté un .Select :D (je suis incorrigible je sais
il faut un certain nombre de plantages pour comprendre l'affection des feuilles et variables mais tu verras que lorsque tu auras suffisamment de données à manipuler tu comprendras pourquoi l'on supprime les select à moins que tu veuilles avoir du temps pour boire le café ;-)
Que signifie le critère Columns.Count
c'est le nombre total de colonnes du classeur.
Autre chose, j'ai remarqué que si je lancais la macro
parce que tu n'a pas utilisé le with que je t'avais mis.
j'ai fait rajouté un .Select :D (je suis incorrigible je sais
il faut un certain nombre de plantages pour comprendre l'affection des feuilles et variables mais tu verras que lorsque tu auras suffisamment de données à manipuler tu comprendras pourquoi l'on supprime les select à moins que tu veuilles avoir du temps pour boire le café ;-)
Koalacid
Messages postés
70
Date d'inscription
vendredi 5 septembre 2014
Statut
Membre
Dernière intervention
8 mars 2016
2
19 janv. 2016 à 16:24
19 janv. 2016 à 16:24
Ok, bon je vais apprendre un peu par moi-même, il me faut tester pour apprendre.
En ce qui concerne les données, je sens arriver un grand nombre, en fait je le vois gros comme un cyclone! :D
En ce qui concerne les données, je sens arriver un grand nombre, en fait je le vois gros comme un cyclone! :D
19 janv. 2016 à 09:22
Génial! Ca fonctionne! Merci beaucoup à toi!
Pour les .select, je sais ils ne servent pas à garnd chose, mais étant débutant, j'ai besoin d'écrire les étapes pour être sûr de les comprendre.
Dans le même contexte, sans vouloir abuser de ton temps, tu peux m'expliquer ce qui n'allait pas?
J'ai vu que la syntaxe n'était pas identique. c'était "juste" ca?
Est-ce que cette partie du code:
Et celle-là:
Sont similaires?
Je comprend ta méthode, mais pour savoir, est-ce que j'aurais pu lui demander d'aller chercher à chaque fois la dernière cellule pleine puis d'aller un cran plus loin et avoir le même résultat?
Sincèrement,
Koalacid
19 janv. 2016 à 10:23
j'ai besoin d'écrire les étapes pour être sûr de les comprendre
Tu as parfaitement raison car lorsque l'on a compris le fonctionnement c'est plus facile de coder ce que l'on veut.
est-ce que j'aurais pu lui demander d'aller chercher à chaque fois la dernière cellule pleine
Tu aurais pu mais le "xlToRight" est assez bizarre comme réaction et difficile d'utilisation car l'on se retrouve souvent très à droite sur la dernière colonne (et avec un offset...) ou au milieu si tu as une colonne vide. Par exemple si tu n'as rien en B4, tu vas "planter".
Cependant ta méthode "Range" devrait fonctionner
j'utilise plus souvent Cells que Range car l'on joue plus facilement avec lignes et/ou colonnes à la fois
Pour le end, xlToLeft ou xlup sont très fiables en partant du maxi mais xlToRight et xldown posent souvent problèmes avec les vides éventuels.
Plutôt que les select de feuilles qui sont très gourmands en temps, il vaut mieux utiliser :
- soit With sheets("xxx") puis . et tes objets de la feuille
- soit faire un set
. Dim ws as worksheet
. set ws = sheets("xxx")
. puis ws. et tes objets de la feuille
19 janv. 2016 à 13:00
Ducoup j'ai essayé ainsi
Et ca fonctione! :)
Mais je sais pas pourquoi :(
Que signifie le critère Columns.Count? Pourquoi l'utiliser à ce moment et dans cette combianaison?
Autre chose, j'ai remarqué que si je lancais la macro depuis la feuille blabla1 le copier/coller se faisait en blabla1 et dans le cas ou j'étais sur blabla2 ca faisait sur blabla2.
Alors j'ai fait rajouté un .Select :D (je suis incorrigible je sais mais j'ai uen deadline donc pour l'instant je vais rester là-dessus et je regrderais pour la prochaine macro comment faire ces set qui sont assez intéressants!)
En tout cas merci pour ton aide!
Sincèrement