Copier une ligne et coller plusieurs fois en fct de la valeur d'une cellule

Bonjour,

Je ne trouve pas de solution à mon problème sur le forum. beaucoup de sujet ce rapproche, mais je n'arrive pas à les transformer.

Je souhaiterais copier une ligne et la dupliquer autant de fois que c'est demandé dans une cellule, et cerise sur le gâteau, je voudrais qu'une référence soit incrémenter d'autant de fois que dupliqué.

Ex: ma ligne A24 à J24 est à dupliquer 5 fois(indiqué cellule A5=5)

Ma référence en O24 est 851donc dupliqué 5fois O25=851.1 , O26=852.2 , .......

Auriez vous une solution?

Merci,

Bonne après midi.

Bonjour,

Voici un fichier.

Merci

Bonjour,

Je ne trouve pas de solution à mon problème sur le forum. beaucoup de sujet ce rapproche, mais je n'arrive pas à les transformer.

Je souhaiterais copier une ligne et la dupliquer autant de fois que c'est demandé dans une cellule, et cerise sur le gâteau, je voudrais qu'une référence soit incrémenter d'autant de fois que dupliqué.

Ex: ma ligne A24 à J24 est à dupliquer 5 fois(indiqué cellule A5=5)

Ma référence en O24 est 851donc dupliqué 5fois O25=851.1 , O26=852.2 , .......

Auriez vous une solution?

Merci,

Bonne après midi.

57classeur1.xlsx (12.43 Ko)

Bonjour,

Je ne sais pas exactement comment tu veux venir à tes résultats, mais voici 2 propositions, sans macro:

Peut être que tu connais déjà cette manip, mais tu peux obtenir le résultat logique quand il y a une progression:

si tu as a11 puis a12, tu peux obtenir a13 directement en recouvrant au moins 2 termes, ce qui trouve la progression, et dés que tu as la croix noir tu peux tirer autant de cases que tu veux.

sans titre

Ensuite, si tu veux un nombre de fois attaché à une référence "851" (pas un chiffre), tu peux faire 851= B7 & ".4" ou =B7&"."&"4" si tu veux dégager un nombre de fois. Dans ces 2 cas, tu obtiens 851.4.

A+

fronck

Salut JulienV,

Salut Fronck,

quelque chose comme ça ?

  • un double-clic dans 'Accueil'[A2:A8] démarre le traitement ;
  • un changement dans 'Accueil' [B2:B8] efface le traitement précédent.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
If Not Intersect(Target, Range("A2:A8")) Is Nothing Then
    Cancel = True
    For x = 1 To [B8]
        iRow = Range("A" & Rows.Count).End(xlUp).Row + 1
        Range("A" & iRow).Resize(1, 5).Value = WorksheetFunction.Transpose(Range("B2:B6"))
        Range("F" & iRow) = CStr([B7] & "." & x)
    Next
    With Worksheets("RECAP")
        iRow = .Range("B" & Rows.Count).End(xlUp).Row + 1
        .Range("B" & iRow).Resize([B8], 6).Value = Range("A13").Resize([B8], 6).Value
    End With
End If
'
End Sub

A+

48julienv.xlsm (18.40 Ko)

Bonjour Curulis et Julien,

Dabord désolé Julien pour mon ébauche comparé aux magnifiques 'trucs' de Curulis, j'étais fatigué hier soir, et n'ai pas compris le transposé qu'il fallait faire en macro.

Ensuite, Curulis j'ai intégré tes double clics et la macro principale sauf pour la partie qui se passe en feuille RECAP:

 With Worksheets("RECAP")
        iRow = .Range("B" & Rows.Count).End(xlUp).Row + 1
        .Range("B" & iRow).Resize([B8], 6).Value = Range("A13").Resize([B8], 6).Value
    End With

iRow=B15, çà ok.

Je butte sur le resize. Déjà je sais pas ou tu changes de page, mais j'imagine que tu vas chercher "5" en feuille accueil,

parce que si c'est sur la page RECAP, B8=a6 je vois pas ce que tu ferais avec.

çà donne resize(5,6) donc 2 lignes supplémentaires au lieu de 5, c'est pas mieux

merci pour tes éclaircissements.

a+

fronck

Merci Curulis & Fronck,

Curulis, c'est exactement ce que je cherche à faire, par contre je n'arrive pas à tous transposer à mon fichier, peux tu faire une annotation/explication sur les lignes et colonnes ?

Merci, bon weekend

Julien

Salut l'équipe,

@Fronck

.Range("B" & iRow).Resize([B8], 6).Value

Pas de point devant [B8] donc se rapporte à 'Accueil' comme tu le pensais bien... Logique!

Julien, le code est tellement court et simple que je ne vois pas quoi t'expliquer de surnaturel!

Si ton fichier de travail est à ce point différent... envoie! Je suis sûr que Fronck se fera un plaisir d'adapter l'affaire!

A+

Bonjour Curulis et Julien,

Curulis j'aimerais bien, mais je comprends pas çà :

        .Range("B15").Resize([5, 6).Value = Range("A13").Resize(5, 6).Value

a+

fronck

Salut l'équipe,

@Fronck

.Range("B" & iRow).Resize([B8], 6).Value

Pas de point devant [B8] donc se rapporte à 'Accueil' comme tu le pensais bien... Logique!

Julien, le code est tellement court et simple que je ne vois pas quoi t'expliquer de surnaturel!

Si ton fichier de travail est à ce point différent... envoie! Je suis sûr que Fronck se fera un plaisir d'adapter l'affaire!

A+

Mdr, il est vrai que le code est cours, mais pour un novice comme moi, malgré une formation macro( assez court), je galére quand même ) . Mais j'ai pu adapter et tous fonctionne!

Par contre je souhaiterais retirer le double clic en A2:A8 pour coupler le code avec d'autre macro et le bloque encore

Peut on le faire?

Merci

Salut Julien,

bien sûr! On fait ce qu'on veut en VBA!

Tu choisis l'événement ou la commande qui doit exécuter le code et tu y colles, de manière adéquate, le code ci-dessous en adaptant les paramètres (Range et Feuille), évidemment!

For x = 1 To [B8]
        iRow = Range("A" & Rows.Count).End(xlUp).Row + 1
        Range("A" & iRow).Resize(1, 5).Value = WorksheetFunction.Transpose(Range("B2:B6"))
        Range("F" & iRow) = CStr([B7] & "." & x)
    Next
    With Worksheets("RECAP")
        iRow = .Range("B" & Rows.Count).End(xlUp).Row + 1
        .Range("B" & iRow).Resize([B8], 6).Value = Range("A13").Resize([B8], 6).Value
    End With

Besoin d'aide? Tu connais l'adresse!

A+

Salut Julien,

bien sûr! On fait ce qu'on veut en VBA!

Tu choisis l'événement ou la commande qui doit exécuter le code et tu y colles, de manière adéquate, le code ci-dessous en adaptant les paramètres (Range et Feuille), évidemment!

For x = 1 To [B8]
        iRow = Range("A" & Rows.Count).End(xlUp).Row + 1
        Range("A" & iRow).Resize(1, 5).Value = WorksheetFunction.Transpose(Range("B2:B6"))
        Range("F" & iRow) = CStr([B7] & "." & x)
    Next
    With Worksheets("RECAP")
        iRow = .Range("B" & Rows.Count).End(xlUp).Row + 1
        .Range("B" & iRow).Resize([B8], 6).Value = Range("A13").Resize([B8], 6).Value
    End With

Besoin d'aide? Tu connais l'adresse!

A+

Re Curulis57,

ça marche pô

J'ai: erreur de compilation / variable non definie

code:

Option Explicit

Sub doubleclic()

For x = 1 To [B16]

iRow = Range("A" & Rows.Count).End(xlUp).Row + 1

Range("A" & iRow).Resize(1, 18).Value = WorksheetFunction.Transpose(Range("B3:B20"))

Range("Q" & iRow) = CStr([B19] & "." & x)

Next

With Worksheets("DATA")

iRow = .Range("D" & Rows.Count).End(xlUp).Row + 1

.Range("D" & iRow).Resize([B16], 18).Value = Range("A24").Resize([B16], 18).Value

End With

End Sub

Merci

Petit comique,

Option Explicit

Ça t'oblige à déclarer CHAQUE variable utilisée dans CHAQUE sub...

Pour afficher correctement un code dans un message, utilise la balise "</>" dans la barre d'outils de la fenêtre d'édition du message...

A+

Petit comique,

Option Explicit

Ça t'oblige à déclarer CHAQUE variable utilisée dans CHAQUE sub...

Pour afficher correctement un code dans un message, utilise la balise "</>" dans la barre d'outils de la fenêtre d'édition du message...

A+

Ok, merci.

Après avoir déclarer chaque variable, ça marche mieux!!

Merci l'info "</>"

Bonne soirée

Hello Curulis,

J'ai essayer de retransmettre les lignes de code et l'adapter à un nouveau fichier de gestion des heures pour incrémenter les heures et les enregistrer via un USF. Il fonctionne à moitié, et je ne comprend pas pourquoi, maintenant il écrase tous sur la même ligne? Pourrais tu m'aider?

Merci

Julien

Rechercher des sujets similaires à "copier ligne coller fois fct valeur"