Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 macro copier coller avec condition

  • Initiateur de la discussion Initiateur de la discussion Bnj
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Bnj

XLDnaute Occasionnel
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

bonjour

un essai avec ce code à mettre dans un module standard et à affecter à ton bouton
VB:
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
 
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
 
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
 
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
 
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é
 
Bonsoir le fil, le forum

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

Voir ce petit rappel 😉
VB:
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
215
Réponses
7
Affichages
702
Réponses
10
Affichages
542
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…