IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

VBA insérer une ligne si deux cellules différentes


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2023
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mai 2023
    Messages : 9
    Par défaut VBA insérer une ligne si deux cellules différentes
    Bonjour à tous.
    Je cherche à faire un truc sous Excel mais je coince. Qui peut m'aider.
    Sur la feuille 1 j'ai une ligne avec des données dans différentes colonnes. Sur la colonne 1 c'est un compteur qui s'incrémente automatiquement. Quand ce compteur bouge je veux copier cette ligne et l'insérer en ligne 1 dans la feuille 2.
    J'ai fais ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Workbook_Activate()
     
    If Cells(Feuil2!A2) <> Cells(Feuil1!A4) Then
     
    Sheets("Feuil1").Select
        Rows("2:2").Select
        Selection.Copy
        Sheets("Feuil2").Select
        Rows("4:4").Select
        Selection.Insert Shift:=xlDown
     
    End Sub
     
    End If
    Ca ne marche pas?
    Si quelqu'un peut m'aider?

  2. #2
    Membre émérite
    Homme Profil pro
    Responsable des études(en disponibilité)
    Inscrit en
    Juin 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des études(en disponibilité)
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 367
    Par défaut
    Bonjour

    Le end if avant le end sub ce serait mieux.

    tu peux te passer des .select.

  3. #3
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Bonjour, déjà un end if après le end sub ? Le compilateur doit retourner une erreur non ?
    ENsuite tous ces select sont inutiles, et enfin, si tu veux détecter un changement dans la feuille ce n'est pas dans l'évènement _Activate qu'il faut mettre le code. Teste ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
        ' Vérifier si la modification a été effectuée dans la feuille "Feuil1" et si elle concerne la colonne A
        If Sh.Name = "Feuil1" And Target.Column = 1 Then
            ' Récupérer la ligne modifiée
            Dim modifiedRow As Range
            Set modifiedRow = Sh.Rows(Target.Row)
     
            ' Définir la ligne cible dans la feuille "Feuil2"
            Dim targetRow As Long
            targetRow = 1
     
            ' Insérer une nouvelle ligne en haut de la feuille "Feuil2"
            Sheets("Feuil2").Rows(targetRow).Insert Shift:=xlDown
     
            ' Copier la ligne modifiée depuis la feuille "Feuil1" vers la nouvelle ligne insérée dans la feuille "Feuil2"
            modifiedRow.Copy Destination:=Sheets("Feuil2").Rows(targetRow)
        End If
    End Sub

  4. #4
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2023
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mai 2023
    Messages : 9
    Par défaut Macro?
    Merci Frank.
    Désolé je suis vraiment un novice. Cela ne marche pas, je ne comprend pas cela n'est pas vu comme une macro, je n'arrive pas à la lancer.

  5. #5
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Salut, ce n'est pas une macro qu'il faut lancer, cela se fait automatiquement. Elle est placée dans l'évènement Workbook_SheetChange, donc elle va s'exécuter lorsqu'il y a un changement dans une feuille du classeur. La macro vérifie si le changement s'est fait dans la colonne A de "Feuil1", si oui il copie toute la ligne correspondant à la cellule modifiée et l'insère en première ligne de "Feuil2", sinon il ne se passe rien.
    Donc, lorsque tu es dans l'éditeur VBA, dans la fenêtre de projets, tu double cliques sur ThisWorkbook et tu colles la macro dans la fenêtre de droite et elle fonctionnera.

  6. #6
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2023
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mai 2023
    Messages : 9
    Par défaut super
    Salut.
    Désolé je croyais avoir fait ceci et que cela ne marchait pas. J'ai refait un test et c'est OK. Merci.

  7. #7
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2023
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mai 2023
    Messages : 9
    Par défaut
    Citation Envoyé par virloc Voir le message
    Salut.
    Désolé je croyais avoir fait ceci et que cela ne marchait pas. J'ai refait un test et c'est OK. Merci.
    Bonjour

    Cela fonctionne sauf que maintenant la cellule qui change d'état est une variable, je pense que cela ne fonctionne plus car Excel ne voit plus le changement de valeur.
    Il faudrait également que la copie de la ligne soit faite avec les valeurs.
    Autre chose, comment faire si je ne veux pas recopier toute la ligne mais seulement de la colonne A à F?

    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 23/03/2016, 14h11
  2. Insérer une ligne entre deux autres dans un fichier
    Par c1malabar dans le forum Langage
    Réponses: 8
    Dernier message: 25/05/2011, 19h44
  3. Insérer une ligne entre deux lignes
    Par lecroquant dans le forum Débuter
    Réponses: 6
    Dernier message: 01/10/2010, 12h17
  4. [VBA] insérer une ligne dans un fichier excel
    Par cokinoumasterflash dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/07/2005, 18h52
  5. [VBA][Excel]Insérer une ligne
    Par loverdose dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/02/2005, 16h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo