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 :

Ajouter ligne avec condition suivi d'un copier coller [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 33
    Par défaut Ajouter ligne avec condition suivi d'un copier coller
    Bonsoir à toutes et tous,

    Tout d'abord, le mois de janvier n'étant pas encore fini, je vous souhaite à toutes et tous une bonne année 2014, et beaucoup de sujets à résoudre.

    Maintenant voici mon problème.

    J'ai une feuille sur laquelle je veux ajouter une ligne si une cellule contient un chiffre.

    Plus précisément voila ce que cela donne:

    J'ai une cellule " O5 " qui peut contenir soit un "1" soit un " 0 ".

    Si c'est " 0 ", je voudrais qu'il n'y ait aucune action.

    Si c'est un " 1 " je voudrais insérer une ligne sur l'ensemble de la ligne 16, et qu'ensuite la valeur se trouvant en "C4 " soit copiée en "K16", et les valeurs se trouvant de " P3 à AI3 " soient copiées de " M16 à AF16 ".

    Je vous remercie d'avance de votre aide.

    Cordialement

    Dubdub22

  2. #2
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut ajouter ligne avec condition
    Bonjour,

    Regarde si ceci peut te convenir.
    Ce code réagit dès que tu mets 1 dans la cellule O5. (événementiel)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub worksheet_change(ByVal target As Range)
    If target.Address = "$O$5" Then
        If [O5] = 1 Then
            Application.EnableEvents = False
            Rows("16:16").Insert Shift:=xlDown
            Range("C4").Copy Range("K16")
            Range("P3:AI3").Copy Range("M16")
            Application.EnableEvents = True
        End If
    End If
    End Sub
    Cordialement,

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 33
    Par défaut
    Bonjour nibledispo,

    Le code que tu m'as transmis fonctionne bien, mais ne répond que partiellement à ce que je recherche.

    Je m'explique, il me copie bien ce que je demande, mais il me recopie également les formules avec, (mais dans ma demande je n'avais pas précisé qu'il y avait des formules que je ne veux pas recopier, mes excuses pour ce manque), ce qui fait qu'automatiquement lorsque j'ai le résultat "0", tout s'efface, alors qu'au contraire je voudrais garder les données recopiées, c'est pour cela que je voudrais également qu'il me rajoute une ligne avant de coller les valeurs dans les cellules demandées, cela me permettrait d'avoir les dernières valeurs enregistrées en première ligne, et de pouvoir comparer ensuite avec les précédentes.

    Merci de t'être penché sur mon problème, et si tu as une nouvelle formule je suis toujours preneur.

    Cordialement

    Dubdub22

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 33
    Par défaut
    Re bonjour nibledispo,

    Voila, j'ai apporté quelques petites modifs à ton code (à l'aide de macros excel) que je te joints,

    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
    19
    20
    21
    22
    23
    24
    Sub worksheet_change(ByVal target As Range)
    If target.Address = "$O$5" Then
        If [O5] = 1 Then
            Application.EnableEvents = False
        Rows("16:16").Insert Shift:=xlDown
     
     
     
        Range("C4").Copy
     
        Range("K16").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
     
     
        Range("P4:AI4").Copy
     
        Range("M16").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
            Application.EnableEvents = True
       End If
    End If
    End Sub


    mais j'ai un souci qui est le suivant:

    "O5" est le résultat d'une formule =somme(P5:AI5) , alors si je laisse la formule il n'y a aucune action, même si le résultat de "O5" change, mais si je le mets à la main là, j'obtiens ce que je désire.

    Connais-tu les raisons et,aurais-tu la solution à ce problème ?
    J'aimerais bien que le résultat de "O5" se fasse automatiquement, car j'ai plus de 50 feuilles à faire comme cela.

    Merci d'avance

    Cordialement

    Dubdub22

  5. #5
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut ajouter ligne avec condition
    bonjour,

    je n'ai pour l'heure pas de réponse.
    en attendant une idée lumineuse simplifie l'écriture de ton code.

    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
     
    Sub worksheet_change(ByVal target As Range)
     
    If target.Address = "$o$5" Then
     
        If [o5] = 1 Then
            Application.EnableEvents = False
            Rows("16:16").Insert Shift:=xlDown
            Range("C4").Copy
            Range("K16").PasteSpecial Paste:=xlPasteValues
            Range("P3:AI3").Copy
            Range("M16").PasteSpecial Paste:=xlPasteValues
            Application.EnableEvents = True
        End If
    End If
    End Sub
    Cordialement,

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 183
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Il y a quelque chose qui m'échappe entre ce que tu écris
    "O5" est le résultat d'une formule =somme(P5:AI5) , alors si je laisse la formule il n'y a aucune action, même si le résultat de "O5" change, mais si je le mets à la main là, j'obtiens ce que je désire.
    et cette partie de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub worksheet_change(ByVal target As Range)
    If target.Address = "$O$5" Then
    If [O5] = 1 Then
    Le changement du résultat d'une formule ne déclenche pas la procédure événementielle worksheet_change et si on écrit dans la cellule O5 on écrase forcément la formule.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 02/07/2015, 17h12
  2. [XL-2003] Copier de ligne avec condition
    Par guigui69 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/06/2011, 11h29
  3. [E-03] Copie de ligne avec condition de type rechercheV
    Par Lufia dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/02/2009, 15h24
  4. inserer une ligne avec condition
    Par pepesese dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/02/2008, 20h22
  5. Affichage ligne avec condition dans /etc/passwd
    Par mzt.insat dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 17/04/2006, 22h25

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