Microsoft 365 Formule recopiée selon nombre de lignes remplies

Moreno076

XLDnaute Impliqué
Bonsoir à tous.

Voilà ci-joint j'ai un fichier avec une macro Lancement.

Dejà, petit soucis dans le premier onglet. Je n'ai pas réussi à inclure dans la macro que je souhaite rajouter 7 colonnes D à J, je suis obligé de le faire manuellement avant de lancer la macro.

Une fois la macro finie je souhaiterais que la mise en forme de la ligne 4 (qui est masquée) se reproduise autant de fois qu'il y est de lignes. Pour le moment j'ai fait en sorte que les formules soient sur 1000 lignes.

Merci pour votre aide
 

Pièces jointes

  • V2 test.xlsm
    53.1 KB · Affichages: 2

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Moreno,
Pour la mise en forme, il ne faut jamais recopier la mise en forme ligne par ligne. XL enregistrera N fois la mise en forme et le fichier va grossir énormément. Il vaut mieux le faire sur une plage, ça ne fait qu'une mise en forme.
Un essai ci dessous :
VB:
Sub CopieFormat()
    Rows("3:5").EntireRow.Hidden = False      ' Ligne 4 visible
    Range("C4").Select
    Application.CutCopyMode = False           ' Cellule C4 copie
    Selection.Copy
    Range("C4:C1000").Select                        ' Selection de la colonne
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False    ' Copie du format de C4
    Rows("4:4").EntireRow.Hidden = True      ' Masquage ligne 4
    [C5].Select
End Sub
Le premier point je n'ai pas compris. Il faut rajouter 7 colonnes après C ?
Si c'est cela, on peut faire :
Code:
Sub InsertionColonnes()
    Columns("D:D").Select
    For i = 1 To 7
        Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Next i
    Range("D3").Select
End Sub
L'utilisation de l'enregistreur macro permet de simplifier la tache au niveau de la syntaxe.
 

Moreno076

XLDnaute Impliqué
Bonjour Sylvanu. Pour l insertion de colonnes ca fait comme moi.
1578662052223.png


Alors que je voudrais ca

1578662126412.png

Pour le copieformat je ne sais pas trop où le mettre, à quel endroit. La macro lancement enchaine les macros. Merci
 
Dernière édition:

Moreno076

XLDnaute Impliqué
Je ne comprends pas. Vous voulez la macro dans le premier onglet.
Mais dans le premier onglet la ligne 4 n'est pas masquée !
Pouvez vous préciser dans quel onglet vous voulez les deux macros.
Dans le premier onglet lancer la macro defusionne et supprimer lignes et ensuite copie.
Ensuite c'est après ca se corse, je voudrais que la ligne 4 se recopie autant de fois qu'il y a de lignes.

Voilà
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Cette macro est à lancer à la fin de votre Lancement.
VB:
Sub InsertionColonnes()
    Range("B:B").UnMerge
    Columns("D:D").Select
    For i = 1 To 7
        Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Next i
    '.MergeCells = False
    Range("B4:M4").Merge
    Range("B5:M5").Merge
    Range("B7:M7").Merge
    Range("B8:M8").Merge
    Range("B11:M11").Merge
    Range("B12:M12").Merge
End Sub
 

Moreno076

XLDnaute Impliqué
Je vous rejoins le fichier. Lancer la macro sur le premier onglet. Je voudrais que la ligne 4 (suivi estimation stock) se reproduise autant sur la mise en forme sur les lignes en dessous autant qu il y ait de cases remplies. Ensuite de recopier les formules des cases D4 F4 H4 J4. Désolé ce n'étais pas très clair sur le premier fichier. Merci
 

Pièces jointes

  • V2 test.xlsm
    53.1 KB · Affichages: 5

sylvanu

XLDnaute Barbatruc
Supporter XLD
A essayer,
J'ai un problème de test car vos formules appellent des fichiers ... que je n'ai pas. ('g:\Users\Olivier\Desktop\BOIRON\[CONTROLE V0.xlsm])
J'ai mis la macro sous Lancement et est appelée par elle.
VB:
Sub InsereFormules()
Dim Taille As Integer
    Taille = Range("B" & Rows.Count).End(xlUp).Row      ' Cherche dernière cellule de B
    Rows("3:5").EntireRow.Hidden = False                ' Ligne 4 visible
    Range("D4:J4").Copy                                 ' Copie format formules
    Range("D5:J" & Taille).Select
    ActiveSheet.Paste                                   ' Colle
    Rows("4:4").EntireRow.Hidden = True                 ' Masque ligne 4
    [A1].Select
End Sub
Si pb, vous pouvez vous en inspirer.
 

Pièces jointes

  • V2 test.xlsm
    46.4 KB · Affichages: 2

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16