Copie plage de cellules

  • Initiateur de la discussion Initiateur de la discussion Brumarj
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

B

Brumarj

Guest
Bonjour,
J'ai un fichier avec trois onglets : dans l'onglet 1, j'ai une cellule E12 qui contient un chiffre indiquant le nombre de site.
sur l'onglet 2, dès lors que le nombre de site est supérieur à 10, je veux ajouter une plage de cellules immédiatement en dessous de la plage de cellules B8😛27 et chaque element ajouté devra être semblable à b8😛9 et cela autant de fois qu'il y a de différence entre 10 et le chiffre figurant en e12 :
Ex si e12 = 13, je dois ajouter 3 fois (b8😛9) et cela avec la même mise en forme et si possible les formules y afférentes.
Bien sûr les autres données doivent être décalées vers le bas de façon à conserver la structure du fichier
Je joint un fichier test pour être plus compréhensible. Pouvez-vous m'aider à demarer ce projet ?
merci de votre aide,
brumarj
 

Pièces jointes

Re : Copie plage de cellules

Bonjour Brumarj, bonjour le forum,

Je te prospose la macro ci-dessous :
Code:
Sub Macro1()
Dim n As Byte 'déclare la variable n
Dim x As Byte 'déclare la variable x
Dim dest As Range 'déclare la variable dest (DESTination)
 
With Sheets("Fiche analyse multisites") 'prend en compte l'onglet "Fiche analyse multisites"
    If .Range("E12") > 10 Then n = .Range("E12") - 10 'si E12 est supérieur à 10, définit la variable n
End With 'fin de la prise en compte de l'onglet 'Fiche analyse multisites"
 
With Sheets("SMP") 'prend en compte l'onglet "SMP"
    .Select 'sélectionne l'onglet
    For n = 1 To n 'boucle de 1 à n
        .Range("B26:P27").Copy 'copie la plage B26:P27
        Set dest = .Range("B" & .Range("H8").End(xlDown).Row + 1) 'definit dest, la dernière cellule du tableau
        dest.Insert Shift:=xlDown 'insère la plage copiée dans la cellule dest
        .Range("D" & .Range("H8").End(xlDown).Row - 1).Value = n + 10 'place le numéro du site
    Next n 'prochain valeur de la boucle
End With 'fin de la prise en compte de l'onglet "SMP"
Application.CutCopyMode = False 'supprime le contour clignotant des cellules la plage copiée
End Sub
 
Re : Copie plage de cellules

Bonjour,
sur l'onglet 2, dès lors que le nombre de site est supérieur à 10
Ce qui veut dire...?
En considérant que tu le fais manuellement, dans le module de la feuille "Fiche analyse multisites"
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$E$12" Or Target.Value < 10 Or Target.Count > 1 Then Exit Sub
x = 28
nbCopies = Target.Value - 10
With Sheets("SMP")
    For i = 1 To nbCopies
        .Range("B8:P9").Copy
        .Range("B" & x).Insert Shift:=xlDown
        .Range("D" & x) = 10 + i
        For j = 5 To 8
            .Cells(x + 3, j).Formula = .Cells(x + 3, j).Formula & "+" & Chr(64 + j) & x + 1
        Next
        x = x + 2
    Next
End With
Application.CutCopyMode = False

End Sub

Edit : Adiou Robert 🙂

A+
kjin
 
Dernière édition:
Re : Copie plage de cellules

Bonjour Robert et merci, la macro fonctionne parfaitement; Je voudrais te solliciter à nouveau pour que tu m'aides à démarrer ûn complèment à cette macro pour que, en onglet 3, à partir de la même valeur contenu dans le cellule e12 de l'onglet 1, la macro ajoute dans l'onglet 3, à partir de la colonne M, une copie de la plage de cellule L4:L27 avec la mise en forme et les formules contenues dans les cellules copiées.
Je te joins le fichier complet zippé. Je suis très friand de tes commentaires détaillés qui m'aident à reconstituer le raisonnement
 
Re : Copie plage de cellules

Bonjour le fil, bonjour le forum,

Brumarj, ton fichier n'est visiblement pas passé et la plage L24:L27 est vide... Donc je n'ai rien compris et j'attends tes explications pour pouvoir t'aider.

Adiou Kjin...
 
Re : Copie plage de cellules

Bonjour Robert,

A partir de la lacro que tu m'as donné, je dois être capable de traiter mon second problème , mais j'ai besoin d'une explication :
Dans ta macro, je ne comprends pas la syntaxe suivante :
Set dest = .Range("B" & .Range("H8").End(xlDown).Row + 1) 'definit dest, la dernière cellule du tableau
Peux-tu m'expliquer mot à mot afin que je comprenne ,et notamment pourquoi "h8" ?
merci de ton aide,
brumarj
 
Re : Copie plage de cellules

Bonjour brumarj, bonjour le forum,

Quand tu places le curseur en haut d'une colonne et tu combines les touches [Fin] et [flèche vers le bas], le curseur va se placer sur la dernière ligne éditée de la colonne. Par exemple tu mets le curseur sur A1 et il y a des données jusquà A128, [Fin] + [flèche vers le bas] va mettre le curseur dans A128. En VBA on écrirait :
Code:
Range("A1").End(xlDown).Select
Moi je voulais aller à la première ligne vide de ton tableau en colonne B. Mais en colonne B il n'y a pas de données dans toutes les lignes. Comme il y en a en colonne H. Le code :
Code:
Set [B]dest[/B] = .Range("[COLOR=red][B]B[/B][/COLOR]" & .Range("[COLOR=green][B]H8[/B][/COLOR]").[COLOR=cyan][B]End(xlDown)[/B][/COLOR].[COLOR=darkorchid][B]Row[/B][/COLOR] [COLOR=blue][B]+ 1[/B][/COLOR])
signifie : dest sera en colonne B sur la dernière ligne éditée rencontrée en plaçant le curseur dans H8 et en combinant les touches [Fin] + [Flèche vers le bas], puis en décalant d'une ligne pour atteindre la première ligne vide...

Sinon pour ton fichier trop volumineux... Il suffit de partir d'un fichier vierge ayant la même structure que l'original, d'y copier une poignées de données nécessaires à la compréhension et le tour est joué. Pense à nommer les onglet tel que l'original et à placer les données au bon endroit...
 
Dernière édition:
Re : Copie plage de cellules

OK, maintenant, je voudrais faire le même exercice que celui traité pâr la macro que tu as réalisée, mais en copiant des cellules disposées non plus en colonnes comme dans l'onglet SMP, mais en lignes.
j'ai repris le texte de ta macro, mais je patine dans la détermination de la zone à copier :
voici ce que j'ai prréparé, mais je ne sais pas terminer :
Sub macro2()
'Dim n As Byte
'Dim x As Byte
'Dim dest1 As Range

'With Sheets("Fiche analyse multisites") 'prend en compte l'onglet "Fiche analyse multisites"
' If .Range("E12") > 10 Then n = .Range("E12") - 10 'si E12 est supérieur à 10, définit la variable n
'End With 'fin de la prise en compte de l'onglet 'Fiche analyse multisites"

'With Sheets("Multi sites") 'prend en compte l'onglet "Multi sites"
' .Select 'sélectionne l'onglet
' For n = 1 To n 'boucle de 1 à n
' .Range("l4:l27").Copy
' Set dest1 = Range("l").End(xlDown).Column + 1
' dest1.Insert shift: xlDown
' .Range ' Next n 'prochain valeur de la boucle
'End With 'fin de la prise en compte de l'onglet "SMP"
'Application.CutCopyMode = False 'supprime le contour clignotant des cellules la plage copiée
'End Sub
 
Re : Copie plage de cellules

Bonjour le fil, bonjour le forum,

Désolé Brumarj mais même avec le fichier et tes explications je ne comprends pas ce que tu veux. Voici ton fichier. Pour 10 sites, mets manuellement dans l'onglet Multi sites le résultat que tu souhaites obtenir par macro... J'essaierai alors de te faire un code qui correspond.
 

Pièces jointes

Re : Copie plage de cellules

Bonjour le fil, bonjour le forum,

Bon vraiment je suis borné car (je te cite)
Je veux donc copier mes cellules L4:L27 autant de fois que 13-10 à partir de L4+1 et numéroter les groupes de cellules ajoputés de 11 à 13

comme je te l'ai déjà dit beaucoup plus haut les cellules de la plage L4:L27 sont désespérément vides. Ni formules ni données !!! Tu veux copier L4:L27 de quel onglet ? Fiche analyse multisites ?
à partir de L4+1 oui mais dans quel onglet ? Multi sites ?
Je t'ai demandé de mettre dans l'onglet Multi sites le résultat de ce que tu désirais obtenir et tu ne le fait pas... Je ne pourrais pas t'aider si tu ne fais pas l'effort d'être compréhensible !
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

M
Réponses
2
Affichages
1 K
mad4max
M
Retour