Macro pour reproduire les données d'une plage sur d'autres
#1
Débutant XLPages

Inscription: 19/09/2011

Messages: 11

Système d'exploitation:
PC
Version Excel utilisée:
2007
Posté le : 19-09-2011 11h54
Dim DernLig As Long, L As Long
Dim ma_plage_a_copier As Range
  Set ma_plage_a_copier = Range("A15:G18")
Application.ScreenUpdating = False
With Sheets("Feuil1")
DernLig = .Range("A65536").End(xlUp).Row + 1
For L = DernLig To 54 Step -1
.Rows(L - 1 & ":" & L).Insert Shift:=xlDown
.Copy Destination:=Range("A" & ma_plage_a_copier.Row + L * ma_plage_a_copier.Rows.Count)
Next L
End With
Application.ScreenUpdating = True
Bonjour le forum

je ne suis pas nouveau dans ce site simplement j'ai perdu mes identifiants et mot de passe j'étais obligé de me réinscrire par la meme occasion je salut chaleureusement Didier MDF que j'ai eu souvent l'ocassion de le croisé sur d'autre forum.

Je vous éxpose mon probléme j'ai une feuille excel qui contiene 794 formulaires déstinée a étre imprimer je voudrais opérer a des modification sur le 1° formulaire ses modifications seront portées sur l'ensemble des autres formulaires pour cela je doit sauter 59 lignes j'ai fait ce petit code inspiré d'un code de Didier mais il bloque au niveau cette ligne.
.Copy Destination:=Range("A" & ma_plage_a_copier.Row + L * ma_plage_a_copier.Rows.Count)
je vous remercie d'avance pour vos réponses.


Hors Ligne
Rapport   Haut 

Re: Macro pour reproduire les données d'une plage sur d'autres
#2
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 19-09-2011 20h41
Bonsoir floka61, le Forum,

A vrai dire, je ne comprends pas bien ce que tu souhaites faire exactement avec ce code...

Je pense qu'un petit classeur exemple en pièce jointe et des explications un peu plus détaillées seraient certainement les bienvenus.

Cordialement,

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: Macro pour reproduire les données d'une plage sur d'autres
#3
Débutant XLPages

Inscription: 19/09/2011

Messages: 11

Système d'exploitation:
PC
Version Excel utilisée:
2007
Posté le : 20-09-2011 00h03

Bonsoir Didier et le forum
je me trouve actuellement a la maison le fichier en question se trouve au bureau je m'explique en essayant d'être plus claire dans la plage '"A15:G18") c'est a dire le 1 formulaire je dois inscrire manuellement la Date, le lieu et l'heure ces même informations devront être exportées vers les autres formulaires qui sont en nombre de 794 puisque c'est les même informations une macro copier/coller évitera un travaille manuelle de 2 jours entre chaque plages il y a 54 lignes c'est a dire les informations de la plage ("A15:A18") seront copier sur la plage ("A69:G72") et sur ("A123:G126") ainsi de suite et jusq'au dernier formulaire.
j'espere avoir été claire.
Merci Didier

Hors Ligne
Rapport   Haut 

Re: Macro pour reproduire les données d'une plage sur d'autres
#4
Accro XLPages

Inscription: 09/05/2007
De Courcelles-les-Montbéliard

Messages: 286

Système d'exploitation:
PC & Mac
Version Excel utilisée:
Mac 2004 - 2011, et PC 2003 - 2010
Posté le : 20-09-2011 07h15
Bonjour Floka, Didier, le forum

Ci-joint un exemple de code qui permet de faire ce que tu souhaites.
Sub Floka_mdf_Xlpages()
    'Pas de rafraichissement de l'écran pendant la copie
    Application.ScreenUpdating = False
    'copie des données dans le presse-papier
    Range("A15:A18").Copy
    For I = 1 To 794
        'collage spécial des données copier (794 fois) par décalage de 54 lignes
         'l'objet Range n'ayant pas de function Paste, je passe par la function de collage.spécial de l'objet
        Range("A" & (I * 54) + 15).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=False
    Next I
    'boucle terminée
    'la fonction de copy de l'objet range n'a été faite qu'une seule fois
    'Réactivation du rafraichissement de l'écran
    Application.ScreenUpdating = True
End Sub

@+Jean-Marie 
Hors Ligne
Rapport   Haut 

Re: Macro pour reproduire les données d'une plage sur d'autres
#5
Débutant XLPages

Inscription: 19/09/2011

Messages: 11

Système d'exploitation:
PC
Version Excel utilisée:
2007
Posté le : 20-09-2011 12h58
Dim ma_plage_a_copier As Range
  Set ma_plage_a_copier = Range("A14:G20") ' ici la plage à copier
  For i = 1 To 3 ' pour copier 4 fois juste^pour un essai (réalité, c'est 795)
     ma_plage_a_copier.Copy Destination:=Range("A" & ma_plage_a_copier.Row + i + 54 * ma_plage_a_copier.Rows.Count)
  Next i
Bonjour le forum et jean marie

Merci jean pour le code il fonctionne mais apparrament il décale ça tombe pas dans le bon endroit heureusemnt que j'ai eu le réflexe de l'essayé sur trois copie seulement, par contre j'ai adapté un autre code il me signale aucune erreur mais il ne copie rien le voici :
encore une fois merci jean pour ta réponse et bonne journée
 
Hors Ligne
Rapport   Haut 

Re: Macro pour reproduire les données d'une plage sur d'autres
#6
Accro XLPages

Inscription: 09/05/2007
De Courcelles-les-Montbéliard

Messages: 286

Système d'exploitation:
PC & Mac
Version Excel utilisée:
Mac 2004 - 2011, et PC 2003 - 2010
Posté le : 20-09-2011 13h22
Re...

Le bon réflexe est de faire des essais de code sur une copie de fichier, et ne jamais enregistrer automatiquement le fichier par du code VBA, quand l'on fait des tests.

Ensuite sur le code que j'ai donné, je me suis câlé sur les plages que tu indiquais, après vérification, je colle bien la plage copier dans les plages que tu as mentionné (A69:A72) et (A123:A126). Si après coup tu modifies la plage de départ, en passant à 7 lignes, je n'y peux rien, sauf que de données les bonnes informations au départ est plus que recommandé.

Suite sur le code que tu indiques, si j'applique sur une feuille excel la formule que tu calcules, j'obients les valeur 394 quand I = 1, 395 quand I = 2; 396 quand I = 3, je te fais grace des valeurs jusqu'à la valeur I valant 795. Dans un calcul les paranthéses d'ouverture et de fermeture ont un facteur déterminant sur le résultat.

J'attends donc de ta part, l'explication du décalage sur mon code, et la correction du calcul du décalage de ligne dans ton code.

@+Jean-Marie

Hors Ligne
Rapport   Haut 

Re: Macro pour reproduire les données d'une plage sur d'autres
#7
Débutant XLPages

Inscription: 19/09/2011

Messages: 11

Système d'exploitation:
PC
Version Excel utilisée:
2007
Posté le : 20-09-2011 14h29
Salut jean marie

voici le fichier en question voir la feuille "Convocation"

www.cijoint.fr/cjlink.php le fichier etant volmineux j'ai reduit de sa taille en supprimant quelques et l'envoye avec ci-joint

Merci
Hors Ligne
Rapport   Haut 

Re: Macro pour reproduire les données d'une plage sur d'autres
#8
Accro XLPages

Inscription: 17/08/2007
De Québec, Canada

Messages: 180

Système d'exploitation:
PC
Version Excel utilisée:
Excel 2003, 2007 (FR) & MsProject 2003
Posté le : 21-09-2011 01h27
 Salut le forum

!!! Fichier non accessible !!!


Mytå

Hors Ligne
Rapport   Haut 

Re: Macro pour reproduire les données d'une plage sur d'autres
#9
Débutant XLPages

Inscription: 19/09/2011

Messages: 11

Système d'exploitation:
PC
Version Excel utilisée:
2007
Posté le : 21-09-2011 09h47

bonjour le forum et Mytà

j'ai pas vérifier le fichier donc voici le fichier :

http://www.cijoint.fr/cjlink.php?file=cj201109/cijLC8d7tn.zip

Bonne journée

Hors Ligne
Rapport   Haut 

Re: Macro pour reproduire les données d'une plage sur d'autres
#10
Accro XLPages

Inscription: 09/05/2007
De Courcelles-les-Montbéliard

Messages: 286

Système d'exploitation:
PC & Mac
Version Excel utilisée:
Mac 2004 - 2011, et PC 2003 - 2010
Posté le : 21-09-2011 12h51
Bonjour floka, Didier, Myta, le forum

Houlala !!! pas de données confidentielles dans les fichiers pour exemple, pas de fichier sur ci-joint ou autres, dans quelques jours, ton fichier ne sera plus accessible. Ceux et celles qui voudront comprendre la résolution de ton problème, n'auront plus la base de départ. Tu as largement de place avec 80K pour donner un fichier avec un exemple assez conséquent pour expliquer ton problème.

Dans la partie calcul de la valeur de la ligne, tu as :
      - la ligne de départ 
      - index dans la boucle qui est multiplie par le nombre de lignes que sépare chaque "formulaire"
Donc, 15 est bien la ligne de départ de la plage à copier (A15:G20), le nombre de ligne entre chaque formulaire est de 59 (ligne 74 - ligne 15)

Voilà le code.
Sub Traitement()
Dim I As Long
    Application.ScreenUpdating = False
    Range("A15:G20").Copy
    For I = 1 To 795
        Range("A" & (I * 59) + 15).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=False
    Next I
    Application.ScreenUpdating = True
End Sub

J'ai lancé le code sur 5 "formulaire", tu trouveras sur les 4 premiers un décalage correct, et ensuite un décalage de 2 lignes, je te laisse découvrir et corriger la cause de se décalage, mais je peux t'assurer que le code n'en est pas la cause.

@+Jean-Marie


Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes