Comment rendre une macro automatique à chaque saisie de ligne

Résolu/Fermé
Signaler
Messages postés
14
Date d'inscription
mercredi 10 août 2016
Statut
Membre
Dernière intervention
24 novembre 2016
-
Messages postés
14
Date d'inscription
mercredi 10 août 2016
Statut
Membre
Dernière intervention
24 novembre 2016
-
Bonjour,

J'ai décidé de me lancer dans les macros et d'être plus performante dans les tableaux excel.
Je travaille actuellement sur la mise en place d'un tableau composé de différentes feuilles dont 1 concerne des éléments techniques et l'autre concerne des éléments de facturations (le reste des feuilles sont des fichiers sources pour mes RECHERCHEV).
La 1ère feuille sera remplie continuellement fonction des dossiers en cours par l'équipe Technique et ce sera leur outil de gestion.
La 2ème feuille sera remplie par moi-même et sera mon outil de gestion (facturation).
Je souhaiterai qu'à chaque fois qu'une personne saisie une ligne dans la feuille1 qu'une partie des éléments se colle dans la feuille 2 (ceux qui me seront nécessaires pour la facturation).

Voici la macro que j'ai saisi :

Option Explicit

Sub Copie_Colle_Ligne()
Dim LastRow As Long
Dim WsDepart As Worksheet
Dim WsDestination As Worksheet

Set WsDestination = Sheets("FACTURATION")
Set WsDepart = Sheets("TECHNIQUE")

LastRow = WsDestination.Range("E" & Rows.Count).End(xlUp).Row

Application.ScreenUpdating = False
WsDepart.Range(Cells(3, 2), Cells(3, 5)).Copy
WsDestination.Range("B" & LastRow + 1).PasteSpecial xlPasteValues
WsDepart.Range("H3").Copy
WsDestination.Range("G" & LastRow + 1).PasteSpecial xlPasteValues


Application.ScreenUpdating = False

Set WsDestination = Nothing
Set WsDepart = Nothing
End Sub


Le problème est que ne reporte uniquement et tout le temps que la première ligne de la feuille 1.
Comment faire pour qu'à chaque ligne saisie dans la feuille 1 les informations dont j'ai besoin viennent se coller dans la feuille 2 de façon automatique et sans supprimer d'info dans la feuille 1 et sans que les filles de l'équipe 1 n'est à actionner un bouton (elles sont vraiment nulles avec excel).

J'espère être suffisamment claire et merci pour votre aide.
(pour faire ma macro j'ai fouillé sur votre site et j'étudie actuellement un livre)

2 réponses

Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 560
Bonjour,

Il faut écrire ton code dans la macro événementielle de la feuille d'insertion
Private Sub Worksheet_Change(ByVal Target As Range)

et utiliser
Target.Row
pour avoir le numéro de ligne modifié.

Cela pourrait donner quelque chose comme ceci
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 8 Then   'l'on attend que la colonne H soit saisie
    Dim LastRow As Long
    Dim WsDestination As Worksheet
        Set WsDestination = Sheets("FACTURATION")
        LastRow = WsDestination.Range("E" & Rows.Count).End(xlUp).Row + 1
        Cells(Target.Row, 2).Resize(1, 4).Copy
        WsDestination.Range("B" & LastRow).PasteSpecial xlPasteValues
        Cells(Target.Row, "H").Copy Destination:=WsDestination.Range("G" & LastRow)
End If
End Sub

Toujours zen
La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer.  Antoine de Saint-Exupéry
Messages postés
14
Date d'inscription
mercredi 10 août 2016
Statut
Membre
Dernière intervention
24 novembre 2016

Bonsoir,

Merci pour ton retour rapide.
J'ai donc fait comme tu l'as précisé, c'est-à-dire inséré cette macro événementielle dans ma feuille d'insertion nommée "Technique".

Mais je rencontre 2 soucis :
- le 1er est qu'à partir de la deuxième ligne saisie celle-ci se copie X3 dans la 2ème feuille
- la cellule saisie dans la colonne H de la première feuille ne se copie/colle pas dans la colonne G de la deuxième feuille. Il ne se passe rien.

C'est vrai je suis novice mais je ne comprends pas ces phénomènes.

Merci de ton aide.
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 560
Bonjour,

Voici un petit exemple avec la macro :

https://www.cjoint.com/c/FHmg6gvxSfl
Messages postés
14
Date d'inscription
mercredi 10 août 2016
Statut
Membre
Dernière intervention
24 novembre 2016

Bonsoir,

Super cela fonctionne parfaitement. Merci de ton aide.

Il faut que j'en prépare d'autre donc je vais prendre le temps de le faire et j'espère y arriver du premier coup.

Bonne soirée.

Sabrina