Bonjour
je suis plutôt un adepte des fonctions mais archi nul en VBA
aussi pouvez-vous m'aider pour réaliser cette macro qui est certainement très simple pour vous
voir le bout de fichier
Merci pour vos retours
Bonjour
je suis plutôt un adepte des fonctions mais archi nul en VBA
aussi pouvez-vous m'aider pour réaliser cette macro qui est certainement très simple pour vous
voir le bout de fichier
Merci pour vos retours
Salut,
Voici un petit code à mettre dans le module de ta feuille (click droit sur l'onglet\voir code)
Attention, ce n'est qu'une simple copie de la dernière ligne sur la suivante à chaque changement de valeur en D3.
A+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Private Sub Worksheet_Change(ByVal Target As Range) Dim DerLig As Long 'Variable pour récupérér la dernière ligne utilisée => +1 = où copier If Target.Address <> "$D$3" Then Exit Sub 'Vérifie si la cellule modifiée est D3; si non on sort DerLig = Cells(Columns(3).Cells.Count, 3).End(xlUp).Row 'Récupère le numéro de la dernière ligne remplie => A copier' Rows(DerLig).Copy Destination:=Cells(DerLig + 1, 1) 'Copie la dernière ligne sur celle du dessous End Sub
Merci Fvandermeulen
mais ce n'est pas tout à fait cela, sans doute me suis-je mal exprimé,
la ligne se recopie pas de problème
mais l'adresse n'est pas $D$3 cette cellule n'a rien avoir avec la recopie
les adresses changes au fur et à mesure de la recopie des lignes
donc je rentre un nombre en D8 qui devient la première adresse "D8" qui recopie la ligne 8 mais sans la valeur D8
puis je rentre un second nombre D9 qui devient la nouvelle adresse "D9" qui recopie la ligne 9 mais sans la valeur D9
puis je rentre un troisième nombre en D10 qui devient la nouvelle adresse "D10" qui recopie la ligne 10 mais sans la valeur en D10
etc etc....
si la colonne D est mal placée pour la recopie je peux la mettre en A
merci![]()
J'espère avoir mieux cerné ton problème...essaies ceci
A+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False 'Désactive les évènements Dim DerLig As Long 'Variable pour récupérér la dernière ligne utilisée => +1 = où copier DerLig = Cells(Columns(3).Cells.Count, 3).End(xlUp).Row 'Récupère le numéro de la dernière ligne remplie => A copier' If Target.Row <> DerLig + 1 Or Target.Column <> 4 Then Exit Sub 'Si la cellule modifiée est différente de la cible on sort Cells(DerLig, 3).Copy Destination:=Cells(DerLig + 1, 3) 'Copie la dernière ligne de la colonne C sur celle du dessous Range(Cells(DerLig, 5), Cells(DerLig, 18)).Copy Destination:=Cells(DerLig + 1, 5) 'Copie la dernière ligne de la plage E:R sur celle du dessous Application.EnableEvents = True 'Réactive les évènements End Sub
En gros tu voudrais écrire ta ligne deux fois?
ou alors donner une valeur à la ligne 3 et recopier le résultat des valeurs à la suite?
jijie
merci Fvandermeulen
mais il ne se passe rien
pourtant je pense que tu as compris
Jrjie
"tu voudrais recopier la ligne deux fois"
oui si tu veux mais sans la valeur rentrée en D
par exemple
je souhaites juste en fonction d'une valeur rentrer à partir de D8 qu'il me recopie les formules de la ligne sur la ligne suivante sans la donnée rentrée en D8
et qu'il repète cela si je rentre une nouvelle valeur en D9
et ainsi de suite
ceci afin de m'éviter de recopier avec la poignée des formules sur 10000 lignes et 1000 colonnes avant d'avoir rentrée la moindre valeur dans D
ce n'est qu'une question de volume déja très conséquent du fichier
Merci à vous![]()
Re,
Le code est basé sur le fichier que tu as joint, si tu le fais sur un autre vérifie bien les colonnes et lignes utilisées.
Voici les conditions dans mon code:
La cellule modifiée doit être dans la colonne D et la ligne égale à la dernière ligne remplie +1 (sur base de la colonne C)
Le fichier avec mon code est en pièce jointe si tu veux essayer avec celui là
A+
Partager