Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Formule pour collage répétif

F

fabrice

Guest
bonsoir le forum

Je souhaiterai connaitre une méthode qui me permettrait de copier des cellules automatiquement, suivant une phase donnée.
Je m'explique:
Je dispose de 24 cellules qui doivent etre recopier en dessous. la permière recopier doit venir apres la 24 cellule (elles sont alignées verticalement). Ce recopiage doit etre fait jusqu'a la fin du tableau.

1
2
3
4
...
24
1
2
3
4
...

Si c'est pas claire, je peux essayer de vous réexpliquer.

Merci de votre réponse,
FAb
 
@

@+Thierry

Guest
RE Fabrice.........


VINGT TROIS CELLULES ou VINGT QUATRE CELLULES ? car jusqu'à présent tu parlais de 24 et toutes les macros que j'ai écrites sont sur une base de 24 cellules à recopier...

En fait je pense qu'il te faudrait un UserForm "intelligent" qui te demande ce que tu veux faire à chaque fois !!!

Mais là çà devient vraiment un peu compliqué...

(Soupir)
mais suis pas énervé! je rigole... C'est exactement le même problème que dans ce fil avec toi qui n'est pas fini :
<http://www.excel-downloads.com/html/French/forum/messages/1_8871_8871.htm>

Et comme je t'expliquais déjà là "Cette ficelle représente exactement le perpétuel problème entre les Users et les Développeurs... Cette espèce "d'incommunication" que les gens qui sont loin l'informatique ont pour expliquer clairement leur demande... Ne t'en fais pas Fabrice tu fais partie de la moyenne... "

La seule différence, c'est que maintenant je pense que tu fais partie de l'élite ! Pour la fin de l'année on devrait décerner le prix du plus grand "incommunicator" du forum !!! lol

Bon alors c'est 23 ou 24 ?

...
@+Thierry
 
F

fabrice

Guest
merci, ce prix me fais tres plaisir lol,

Je vais essayer de prendre celui du meileur "communicator".

non, il s'agit bien de 24 cellules, je me suis trompé en t'écrivant.

DESOLE, merciencore
FAb
 
@

@+Thierry

Guest
Bonjour Fabrice,

Bon ci-joint un fichier qui fait exactement ce que j'ai compris !!!

Si ce n'est pas encore çà... Tu vas prendre des cours pour savoir t'expliquer avant de revenir par ici....

Sur ce bonne journée et bonne semaine
;-)
@+Thierry
 

Pièces jointes

  • Copie24x.zip
    13.5 KB · Affichages: 24
F

fabrice

Guest
salut

tu ne vas pas y croire mais c'est exactement ce que je chercher.
Quant on dit que la communication est un art, c'est que c'est vrai!!!

Merci encore de ton aide et de ta patience.

FAb
 
F

fabrice

Guest
salut,

J'ai juste une petite question, surtout ne t'inquiete pas, c'est rien de pénible.
Je voulais juste savoir ce que voulait dir:
"Option Explicit".

Merci
FAb

PS: pour le fichier que tu m'a fait passer sur la suppression, je le testerai ce soir mais il me semble que tu ais pris toute les précautions possibles (lol).
Par ailleurs, merci d'avoir sacrifié ta pause déjeuner pour cette macro
 
@

@+Thierry

Guest
RE Fab,

Option Explicit oblige a déclarer toutes les variables... du module.
C'est préférable...

Regarde ce fil tu trouveras un post où je donne quelques explications à Vériland... (post 28-11-02 22:14)

<http://www.excel-downloads.com/html/French/forum/read.php?f=1&i=9088&t=9014>

Bye Bye, (et dis moi pour le "DateDeleteCal.xls"...)
@+Thierry
 
F

fabrice

Guest
re salut,

Je voulais savoir; Est ce que tu pourrais m'expliquer, SI TU AS LE TEMPS (car ma demande doit passer apres les pbs des utilisateurs), la macro "Copie24X()".
C'est a dire est ce que tu pourrais me dire a quoi servent chaque partie de la macro.

Pour la macro DateDeleteCal.xls, je te tiens au courant.

Merci,
FAb
 
@

@+Thierry

Guest
Bonjour Fab...

Bon vraiment en ayant l'espoir que tu feras la prochaine macro tout seul ...

Voici la macro "commentée en live" !!!

Option Explicit 'DEJA EXPLIQUE
Sub Copie24X()
Dim Table As Long '(DECLARATION de VARIABLE)
Dim X As Currency '(Idem)
Dim Max As Integer '(Idem)
Dim Dif As Integer '(Idem)
Dim Depart As String '(Idem)
Dim Col As Integer '(Idem)
Dim Collage As Integer '(Idem)
Dim Ligne As Integer '(Idem) (consulter l'aide pour savoir ce que sont ces variable)

Table = Sheets(1).Range("A65536").End(xlUp).Row '(on trouve la dernière cellule pleine de la colonne A)
If Table < 25 Then '(On test si c'est plus petit que 25, car sinon çà rentre pas 24 cellules copiées)
MsgBox "La table est trop petite, 25 cellules mini !" '(Message d'alerte)
Exit Sub '(si c'est pas bon ON SORT, fin de macro)
End If '(Fin du Test)
X = (Table - Ligne - 24) / 24 '(On mesure la place dispo divisée pas 24)
Max = Application.WorksheetFunction.RoundDown(X, 0) '(on arrondit inférieur, faut un chiffre entier !)
Dif = Table - 24 - (Max * 24) '(on calcule la différence pour les lignes résiduelles en dessous de 24)
Depart = InputBox("Entrez la cellule de départ svp", _
"ADRESSE DE LA 1er CELLULE", "B1") '(on propose au user de taper la cellule de départ de la copie)
Range(Depart).Select '(on sélectionne ce point de départ)
Ligne = Selection.Row '(on mémorise la ligne de départ)
Col = Selection.Column '(on mémorise la Colonne de départ)
Range(Selection, Selection.Offset(23, 0)).Select '(on garde selectionné et on décalera la sélection de 23)
Selection.Copy '(Copie hi hi hi)
For Collage = 1 To Max '(on fait une boucle sur le nombre de fois max où on peut coller les 24 cellules)
Cells(Ligne, Col).Select '(et On prend le repère, on sélectionne)
Selection.Offset(24, 0).Select '(on Décale de 24 en selection plus bas)
ActiveSheet.Paste '(on colle donc plus bas)
Ligne = Ligne + 24 '(on rajoute 24 pour la prochaine boucle)
Next Collage '(on repare au départ de la boucle mais 24 lignes plus bas donc.....)
Cells(Ligne, Col).Select '(on est sorti de la boucle on sélectionne la premiere des 24 cellule)
Range(Selection, Selection.Offset(Dif - 1, 0)).Select '(on sélectionne juste le "résidu" du nombre de cellules)
Selection.Copy '(Copie hi hi hi)
Selection.Offset(24, 0).Select '(on se met en place 24 cellule plus bas)
ActiveSheet.Paste '(on colle donc juste c'qui faut)
MsgBox "Vos 24 lignes ont été copiées " & Max & " Fois ! Plus " & Dif & " lignes..."
Range(Depart).Select '(on revient à la cellule de départ)
Application.CutCopyMode = False '(on arrete le mode collage (les pointillés autour des cellules)
End Sub '(ouf c'est fini)


....
@+Thierry
 
F

fabrice

Guest
Salut

Je me permet de te recontacter car j'ai un petit soucis avec la macro. G suivis le conseil que tu avais mis en sousentendu dans la macro. G alors un textbox pour savoir quelle est la cellule de départ. C'est la qu'il y a un probleme.
Si je décale toutes les celulle vers le bas (je passe de A a C par exemple), la macro part bien du nouvel endroit mais me rajoute autant de lignes en bas (sur la colonne B uniquement) que les lignes rajoutées en haut sur les deux colonnes). je sais pa si c'est bien calire!!! ;=)

Par ailleurs, je souhaiterai réutiliser cette macro mais maintenant pour copier une cellule. J'ai essayé en regardant tes explications de remplacer les 24 par des 1 et de supprimer de "If table<25 then..." jusqu'a "End if". Mais la ca plante.

Est ce que tu pourrais me guider si ca ne te dérange pas.
Merci
 
@

@+Thierry

Guest
Bon écoute Fabrice

Il semble que quelque chose t'échappe tout à fait Sylvain....

Le but de tout çà c'est de vous permettre de partager les connaissances que nous avons sur Excel... Par de passer mon temps à rectifier une macro parceque celui qui la veut n'arrive pas à s'expliquer.

Non là je suis désolè... En plus j'ai viré ce fichier de test, donc je ne sais plus...
Ensuite tu me parles maintenant "je passe de A a C par exemple"
Alors qu'on était de A à B... faut pas t'étonner que çà plante...
Ensuite tu voudrais que çà le fasse plus que pour une seule cellule... Non c'est pas fait pour çà... quoique si tu t'y mets vraiment tu dois y arriver...

Non franchemant Sylvain entre ces deux posts je t'ai consacré facilement une dizaine d'heures... en quelques jours et le plus désolant c'est que j'ai l'impression que çà ne te sert pas à grand chose...

(pour suivre cette histoire faut voir ce fil et celui ci aussi : <http://www.excel-downloads.com/html/French/forum/messages/1_8871_8871.htm> en fait c'est deux fils qui battent pratiquement tous les records de longueurs du forum !!)

Non il y a des gens bcp plus précis et qui captent rapidement ce qu'on leur dit... et qui ont aussi des problèmes interressants à résoudre... Moi sur ce coup là j'en ai un peu ras le bol.... Surtout que c'est vraiment une macro basic de chez basic... presque à la limite de l'enregistreur de macro... Et le pire c'est que de copier des cellules sur des colonnes entières çà ne peut vraiment pas servir à grand monde...

Voilà Sylvain, je n'ai rien contre toi, mais il faut me comprendre... Sinon je viens dans tron bureau et je te développe un programme complet avec facturation !!

Bon sur ce bon après midi et bon courage.
@+Thierry
 
F

fabrice

Guest
salut,

Je te comprends tout a fait. C tou a fait normal de réagir comme ca!!!
C pour cela que maintenant j'essaye de comprendre mon probleme tout seul grace a l'explication que tu m'as faite de la macro.

Est ce que si g encore un petit probleme apres mettre cassé la tete dessus je peux te contacter???

Merci
 
F

fabrice

Guest
Tu va etre content, j'ai réussi à régler un probleme tout seul!!

En effet, si tu décales les cellules des colonnes A et B du haut vers le bas, tu récuperes apres la macro dans la colonne B autant de cellules en bas que celles que tu as inscérée en haut (compliqué???)

Pour cela, tu remplaces à la ligne"Dif = Table - 24 - (Max * 24)" le premier 24 par 24+nombre de ligne inserrées en haut.

Merci et à la prochaine ( surement à la prochaine!!!:=) )
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…