Copier valeur en fonction titre feuille et ligne
Bonjour la commu
Je reprends excel après un très long moment et j'aurai besoin d'un coup de main pour quelques code vba
j'ai un fichier avec
plusieurs feuilles : Liste / Inrise / decot /SIGR
Je voudrai lorsque j'ecris dans la feuille Liste dans une cellule (B15) il recopie dans la feuille en fonction de la colonne C (ici INRISE) dans la feuille correspondante
mais dans la colonne C je peux aussi écrire DECOT ou SIGR et il faut que cela arrive seulement dans la feuille correspondant à la colonne C
en gros un IF C (cellule i,x) = Inrise then il copie la ligne avec les valeur de la colonne D et E dans la feuille INRISE et dans une cellule (que je pourrai modifier dans le code VBA)
Voici le fichier
Merci
beaucoup
Bonjour,
Si c'est pour recopier toujours sur la ligne 15 des différentes feuilles, pas besoin de code VBA, mais est-ce bien cela ou bien, faut-il ajouter les informations à la suite de celles déjà existantes?
Cdlt
Bonjour
merci de me répondre
En fait non je vais devoir incrémenter a chaque fois
je vais ensuite rajouter une ligne en B16 / B17 etc..
Pour faire un tableau au final
Et cela s'affichera sur la ligne correspondante et la feuille correspondant à la colonne C
Donc en cellule B16 j'ecris : test ; en C16 : INRISE cela affichera les valeurs de cette ligne dans la feuille correspondant (Ici INRISE) mais pas forcement en ligne B16 (sur la feuille INRISE) mais ligne +1 qui a déja une valeur
Si dans la feuille INRISE la dernière ligne non vide est en A16 cela s'affichera sur la ligne B
Si j'ecris : test2 en B25 et c25 : DECOT cela s'affichera en feuille DECOT sur la dernière ligne non vide
Je ne sais pas si je suis assez clair
Désolé
Voici le fichier, dés que vous aurez saisi le nom de la feuille destinataire, les données seront recopiés dans la feuille concernée, il faut donc que vous remplissiez d'abord les 3 autres cellules et finissez par le nom de la feuille en colonne C.
Cdlt
Merci pour votre réponse
Cependant je vous renvoie un fichier excel pour vous montrez un peu mieux ce que je recherche
c'est lorsque j'ecris dans liste en colonne C inrise / decot ou sigr
il va placer les valeurs comme dans dans les feuilles du fichier inrise 2
Merci beaucoup
Bonjour,
Quand vous mettez un fichier à disposition, faites-le comme il faut, car vous aviez parlé de la ligne 15 de la feuille liste, or maintenant, on part de la ligne 1 et c'est une liste de valeurs. De même, vous n'êtes pas précis sur la première ligne de destination des autres feuilles, alors j'ai choisi la ligne2 comme première ligne.
Dès que vous validerez la valeur saisie en colonne C de la feuille "liste", aussitôt les valeurs seront reportées dans la feuille indiquée.
Cdlt
Bonjour
Merci encore pour vos réponses
Cependant lorsque j'écris dans liste cela n'affiche pas les valeurs dans les colonnes respectives ou alors je n'ai pas activé quelque chose?
Et est-il possible de choisir à partir de quel ligne se lance la macro? par exemple ligne 8
Merci bien
Cordialelement
Bonjour,
Cependant lorsque j'écris dans liste cela n'affiche pas les valeurs dans les colonnes respectives ou alors je n'ai pas activé quelque chose?
Je reprends ce que j'ai écrit le 18/07 à 9h53:
"Voici le fichier, dés que vous aurez saisi le nom de la feuille destinataire, les données seront recopiés dans la feuille concernée, il faut donc que vous remplissiez d'abord les 3 autres cellules et finissez par le nom de la feuille en colonne C."**************************************************************************************************************
Et est-il possible de choisir à partir de quel ligne se lance la macro? par exemple ligne 8. OUI
Voici la macro modifiée qui ne s'exécutera que si la cellule sélectionnée se trouve à la ligne 8 ou au-delà et les valeurs ne seront recopiées que si les 4 données sont remplies, mais la cellule qui déclenchera la macro est toujours la cellule en colonne C, donc c'est dans celle-ci qu'il faudra saisir en dernier la valeur("INRISE, DECOT, ou SIGR")
Private Sub Worksheet_Change(ByVal Target As Range)
Dim f2 As Worksheet
Dim DerLig_f2 As Long
On Error GoTo Sortie
Application.EnableEvents = False
If Target.Column <> 3 Or Target.Value <> "" And Target.Row >= 8 Then
Set f2 = Sheets(Target.Value)
DerLig_f2 = f2.Range("G" & Rows.Count).End(xlUp).Row + 1
If DerLig_f2 < 2 Then DerLig_f2 = 2
If Target.Offset(0, -1).Value <> "" And Target.Offset(0, 1).Value <> "" And Target.Offset(0, 2).Value <> "" Then
f2.Range(f2.Cells(DerLig_f2, "D"), f2.Cells(DerLig_f2, "G")).Value = Range(Cells(ActiveCell.Row, "B"), Cells(ActiveCell.Row, "E")).Value
End If
End If
Sortie:
Application.EnableEvents = True
End SubAu lieu de faire déclencher la macro On peut aussi faire déclencher la macro après saisie la valeur de la dernière colonne plutôt que la valeur de la colonne C, c'est à vous de me dire.
Cdlt
Ah parfait
Merci beaucoup de votre aide
edit :
Oui si possible car la dernière cellule qui sera rempli sera la E dans liste
Merci
Bonjour
"On peut aussi faire déclencher la macro après saisie la valeur de la dernière colonne plutôt que la valeur de la colonne C, c'est à vous de me dire."
Oui ca serait parfait
Est-il possible aussi de choisir dans la macro où on affichera les valeurs en € ?
en colonne P ou Z par exemple en fonction des besoin
Merci bien
Bonjour,
Déclenchement de la macro après saisie de la valeur de la dernière colonne
Private Sub Worksheet_Change(ByVal Target As Range)
Dim f2 As Worksheet
Dim DerLig_f2 As Long
On Error GoTo Sortie
Application.EnableEvents = False
If Target.Column = 5 And Target.Value <> "" And Target.Row >= 8 Then
Set f2 = Sheets(Target.Value)
DerLig_f2 = f2.Range("G" & Rows.Count).End(xlUp).Row + 1
If DerLig_f2 < 2 Then DerLig_f2 = 2
If Target.Offset(0, -1).Value <> "" And Target.Offset(0, 1).Value <> "" And Target.Offset(0, 2).Value <> "" Then
f2.Range(f2.Cells(DerLig_f2, "D"), f2.Cells(DerLig_f2, "G")).Value = Range(Cells(ActiveCell.Row, "B"), Cells(ActiveCell.Row, "E")).Value
End If
End If
Sortie:
Application.EnableEvents = True
End Sub***************************************************************************************************************************
Est-il possible aussi de choisir dans la macro où on affichera les valeurs en € ? en colonne P ou Z par exemple en fonction des besoin
Quelle valeur copier en P ou Z et qu'est-ce qui déterminera le choix de la colonne? quand au format, appliquez le format "Comptabilité" sur ces 2 colonnes.
Cdlt
Bonjour
Pardon pour la réponse tardive
Les valeurs sont des valeurs numériques et spécifiquement monétaire €
Ce qui peut determiner le choix de la colonne est le nom de la feuille par exemple : les deux valeurs de la colonne D et E de la feuille liste peuvent etre en P et Z sur la feuille DECOT mais rester en D et E sur la feuille INRISE
Cela dependra des changements sur ces feuilles
Merci beaucoup pour votre aide
Bonjour,
Actuellement, il y a 4 colonnes, les 2 colonnes des montants D et E de la feuille "Liste" pourront aller dans d'autres colonnes des feuilles de destination mais, les valeurs des colonnes B et C, dans quelles colonnes doivent-elles aller?
Pour bien diriger les valeurs dans les bonnes colonnes, il faut leur donner un titre à chacune d'elle, ainsi on pointera les valeurs directement dans les bonnes colonnes quelle que soit la feuille de destination. Alors, quels sont les titres de ces colonnes?
Cdlt
Rebonjour
Voila j'ai refait le fichier avec les bonnes colonnes (emplacement ou doit se trouver les valeurs) et noms
il faut en fait lorsque je tape INRISE ou Decot ou SIGR en colonne G de la feuille 'liste" il affiche le nom du client le budge initial et budget 2024 dans les cases des feuilles correspondantes
Désolé pour le message d'erreur des formules s'il y a
Merci bien
J'ai oublié de dire que la macro doit se lancer a la dernière valeur mise dans la feuille liste (ce sont des euros)
donc en colonne "I" de la feuille liste
Merci beaucoup
Bonjour,
Attention, le nom de l'onglet de la feuille "INRISE" contient un espace à la fin (veuillez le supprimer sinon cela génère une erreur)
Le code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim f2 As Worksheet
Dim DerLig_f2 As Long
On Error GoTo Sortie
Application.EnableEvents = False
If Target.Column = 9 And Target.Value <> "" And Target.Row >= 2 Then
Set f2 = Sheets(Target.Offset(0, -2).Value)
DerLig_f2 = f2.Range("A" & Rows.Count).End(xlUp).Row + 1 'A dernière ligne rempli des feuilles
If DerLig_f2 < 2 Then DerLig_f2 = 3
f2.Cells(DerLig_f2, "A") = Cells(Target.Row, "F") 'nom du client
f2.Cells(DerLig_f2, "O") = Cells(Target.Row, "H") 'Budget initial
f2.Cells(DerLig_f2, "R") = Cells(Target.Row, "I") 'Budget annuel
End If
Sortie:
Application.EnableEvents = True
End SubCdlt
Merci beaucoup
C'est parfait
Une très bonne journée a vous
Bien cordialement