1. Ce site utilise des "témoins de connexion" (cookies) conformes aux textes de l'Union Européenne. Continuer à naviguer sur nos pages vaut acceptation de notre règlement en la matière. En savoir plus.

XL 2016 macro copier coller avec condition

Discussion dans 'Forum Excel' démarrée par Bnj, 12 Avril 2018.

  1. Bnj

    Bnj XLDnaute Junior

    Inscrit depuis le :
    2 Août 2013
    Messages :
    79
    "J'aime" reçus :
    0
    bonjour à tous

    je suis une tare en VBA et j'ai une idée de macro mais n'ai pas les connaissances techniques pour la réalisation.
    je sollicite donc votre aide.
    Pourriez-vous m'aider à réaliser cela ?

    valable pour toutes les lignes du tableau
    j'aimerais que quand je clique sur ce bouton et si la cellule I2 est remplie
    cela :
    copie les cellules D2 et les colle en colonne W2
    copie les cellules N2 ; et les colle en colonne D2
    copie la cellule R2 et colle en cellule G2
    suppression contenu cellule I2 ; J2;K2;M2;N2;Q2;R2;T2;U2


    Ce serait super cool de votre part de m'aider et surtout de m'expliquer comment fonctionne cette macro afin que je puisse la comprendre et progresser.

    Encore une fois, merci de votre attention et MERCI de votre aide (en PJ, un exemple de fichier)
     

    Pièces jointes:

  2. Chargement...

    Discussions similaires - macro copier coller Forum Date
    XL 2016 Copier/Coller de différentes macro Forum Excel 11 Avril 2018
    XL 2016 macro copier coller valeur et format Forum Excel 8 Mars 2018
    Macro copier/coller avec « si » Forum Excel 15 Janvier 2018
    XL 2010 creer une macro copier/coller valeur toute simple! Forum Excel 12 Janvier 2018
    Macro pour copier/coller + Macro Rechercher/Remplacer Forum Excel 20 Novembre 2017

  3. vgendron

    vgendron XLDnaute Barbatruc

    Inscrit depuis le :
    24 Février 2009
    Messages :
    4330
    "J'aime" reçus :
    367
    Utilise:
    Excel 2007 (PC)
    bonjour

    un essai avec ce code à mettre dans un module standard et à affecter à ton bouton
    Code (Visual Basic):

    Sub Mutations()
    With ActiveSheet
        fin = .UsedRange.Rows.Count
        For i = 2 To fin
            If .Range("I" & i) <> "" Then
                .Range("W" & i) = .Range("D" & i)
                .Range("D" & i) = .Range("N" & i)
                .Range("G" & i) = .Range("R" & i)
                .Range("I" & i & ":K" & i).ClearContents
                .Range("M" & i & ":N" & i).ClearContents
                .Range("Q" & i & ":R" & i).ClearContents
                .Range("T" & i & ":U" & i).ClearContents
            End If
        Next i
    End With
    End Sub
     
    Normalement. ca se comprend "intuitivement" avec la traduction Anglais -Francais.
    dis moi s'il reste des lignes obscures :-D
     
  4. Bnj

    Bnj XLDnaute Junior

    Inscrit depuis le :
    2 Août 2013
    Messages :
    79
    "J'aime" reçus :
    0
    MERCI beaucoup !

    ça doit être pour cela que je ne comprend rien en VBA ! je suis une tare en anglais
    peux tu m'expliquer la ligne fin= ... ?
     
  5. Jauster

    Jauster XLDnaute Occasionnel

    Inscrit depuis le :
    22 Septembre 2017
    Messages :
    116
    "J'aime" reçus :
    17
    Habite à:
    ZooParc de Beauval
    Utilise:
    Excel 2016 (PC)
    fin est une variable a laquelle on attribue la valeur .UsedRange.Rows.Count soit les cellules utilisées dans une feuille active (d'où le With ActiveSheet juste avant). Ca permet ensuite de faire une boucle et parcourir non pas toutes les cellules du fichier mais uniquement les cellules utilisées
     
  6. Bnj

    Bnj XLDnaute Junior

    Inscrit depuis le :
    2 Août 2013
    Messages :
    79
    "J'aime" reçus :
    0
    bonjour

    merci pour ces explications

    comment adapter ce code pour que cette macro s'éxécute que si la date comprise dans la colonne R est dépassée ?
     
  7. Lone-wolf

    Lone-wolf XLDnaute Barbatruc

    Inscrit depuis le :
    25 Mars 2010
    Messages :
    5740
    "J'aime" reçus :
    402
    Sexe :
    Masculin
    Travail/Loisirs :
    SE/Programmation (VBA Excel)
    Habite à:
    Ouest-Suisse
    Utilise:
    Excel 2013 (PC)
    Bonjour à tous

    Faudrais s'avoir... en plus tu aurais dû le dire tout de suite, on est pas la pour s'amuser.

    Remplace If .Range("I" & i) <> "" Then par If Date > Date(.Range("R" & i)) Then
    Le reste du code

    Oubien
    If Date(.Range("R" & i)) > Date(.Range("I" & i)) Then
     
  8. Bnj

    Bnj XLDnaute Junior

    Inscrit depuis le :
    2 Août 2013
    Messages :
    79
    "J'aime" reçus :
    0
    Bonjour à tous,

    tout d'abord désolé de ce désagrément.

    je vous embête encore un peu car les solutions approtées m'indiquent une erreur :
    If .Range("I" & i) <> "" And Date > Date(.Range("R" & i)) Then

    l'erreur proviendrait du . entre la parenthèse et Range.

    J'ai essayé de le supprimé mais cela ne fonctionne pas
     
  9. Lone-wolf

    Lone-wolf XLDnaute Barbatruc

    Inscrit depuis le :
    25 Mars 2010
    Messages :
    5740
    "J'aime" reçus :
    402
    Sexe :
    Masculin
    Travail/Loisirs :
    SE/Programmation (VBA Excel)
    Habite à:
    Ouest-Suisse
    Utilise:
    Excel 2013 (PC)
    Bonjour Bnj, jauster, le Forum :)

    .Range("I" & i) <> "" n'est pas utile. Lit comme il faut ce que j'ai écrit au post #6.
     
  10. Jauster

    Jauster XLDnaute Occasionnel

    Inscrit depuis le :
    22 Septembre 2017
    Messages :
    116
    "J'aime" reçus :
    17
    Habite à:
    ZooParc de Beauval
    Utilise:
    Excel 2016 (PC)
    Hello,

    Message supprimé pour ne pas influencer les autres vers une erreur. Mais ce que je ne comprends pas c'est pourquoi ce n'est pas utile ? Le SI ne doit s'appliquer que si i est vide, mais je ne vois pas comment on traite cette condition ? Si DATE de R > DATE de i peut être vrai aussi bien avec I vide que complété
     
  11. Staple1600

    Staple1600 XLDnaute Barbatruc

    Inscrit depuis le :
    24 Juin 2005
    Messages :
    23404
    "J'aime" reçus :
    948
    Habite à:
    Roahzon
    Utilise:
    Excel 2013 (PC)
    Bonsoir le fil, le forum

    @Lone-wolf
    Y a comme un bug dans ton code, non ? ;)

    Voir ce petit rappel ;)
    Code (Visual Basic):
    Sub test()
    MsgBox DateValue(Date + 1) 'j'achète !!!
    MsgBox DateSerial(Year(Date), 1, 1)'j'achète!!!
    'Msgbox Date(Range("A1"))'-<ERREUR!!!
    End Sub
     
     
  12. Lone-wolf

    Lone-wolf XLDnaute Barbatruc

    Inscrit depuis le :
    25 Mars 2010
    Messages :
    5740
    "J'aime" reçus :
    402
    Sexe :
    Masculin
    Travail/Loisirs :
    SE/Programmation (VBA Excel)
    Habite à:
    Ouest-Suisse
    Utilise:
    Excel 2013 (PC)
    Bonsoir tout le monde :)

    @Staple1600

    Tu as raison, erreur de ma part. Date est en trop avant .Range("R" & i).
    If Date > .Range("R" & i) Then


    @Jauster
    <> "" n'a rien à voir avec la condition demandée.
     
  13. Jauster

    Jauster XLDnaute Occasionnel

    Inscrit depuis le :
    22 Septembre 2017
    Messages :
    116
    "J'aime" reçus :
    17
    Habite à:
    ZooParc de Beauval
    Utilise:
    Excel 2016 (PC)
    Effectivement, si le que de "cette macro s'éxécute que si la date comprise dans la colonne R est dépassée ?" exclu la première demande "j'aimerais que quand je clique sur ce bouton et si la cellule I2 est remplie cela :"

    @Bnj où en est la macro ?
     

Partager cette page