Copier coler avec condition

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 !

droopy89

XLDnaute Junior
Bonjour je suis en débutant sous excel j ai déjà créer une ou deux macro quelque chose de tres simple mais la je coince. je vous explique un classeur avec deux feuille une nommée saisie et l’autre nommé copie. J’aimerais vérifier la date du jour de la feuille saisie cellule D13 dans la plage de date mois de la feuille copie .Si la date est dans le tableau je voudrais copier les cellules B16, D16,F16, H16 et les copier dans le tableau en face du jour vérifier.
J’ ai avancer a petit pas voir mes trois première macro.
Exemple date le 10 octobre je vérifie la date dans la plage de cellule mois si date présente je copie les quatre cellules et je les colle dans le tableau sur la ligne du jour 10 octobre sur les quatre cellules suivantes. Si quelqu’un peux me mettre sur la bonne voie merci d’avance
Je joins un petit fichier d'essai
 

Pièces jointes

Re : Copier coler avec condition

Bonjour Droopy, bonjour le forum,

En pièce jointe ton fichier modifié avec la macro événementielle Change dans l'onglet Saisie. Cette macro va se déclencher chaque fois que tu vas taper une date dans D13 de cet onglet :

Code:
Private Sub Worksheet_Change(ByVal Target As Range) 'à chaque édition dans l'onglet
Dim dest As Range 'déclare la variable dest (DESTination)
 
If Target.Address <> "$D$13" Then Exit Sub 'si le changement a lieu ailleurs qu'en D13, sort de la procédure
 
With Sheets("Copie") 'prend en compte l'omglet "Copie"
    'définit la variable dest (recherche l'occurrence de D13 dans la colonne A de l'onglet "Copie")
    Set dest = .Range("A9:A" & .Range("A65536").End(xlUp).Row).Find(Target, .Range("A9"), xlValues, xlWhole)
 
    If Not dest Is Nothing Then 'condition : si il existe au moins une occurrence de dest
        Range("B16").Copy dest.Offset(0, 1) 'copie et colle B16
        Range("D16").Copy dest.Offset(0, 2) 'copie et colle D16
        Range("F16").Copy dest.Offset(0, 3) 'copie et colle F16
        Range("H16").Copy dest.Offset(0, 4) 'copie et colle H16
    End If 'fin de la condition
End With 'fin de la prise en compte de l'onglet "Copie"
End Sub
 

Pièces jointes

Re : Copier coler avec condition

Merci merci cela fonctionne très bien j'ai deux questions
peut on faire démarrer cette macro avec un bouton ?
et peut on dupliquer cette partie de code dans la même macro en changeant les adress( exemple (cellule F16 et H16 collage dans une autre feuille créer)
Merci d'avance
 
Re : Copier coler avec condition

Bonjour Droopy, bonjour le forum,

En pièce jointe ton fichier modifié V2. L'action se fait au clic sur le bouton essai 1. La copie se fait sur les onglets Copie et Créer. Ci-dessous le code avec en rouge les parties qui ont changé :
Code:
Private Sub CommandButton1_Click()
'essai1
'déclarations des variables
Dim dest As Range 'déclare la variable dest (DESTination)
[COLOR=red]Dim dest2 As Range 'déclare la variable dest (DESTination2)[/COLOR]
[COLOR=red]Dim d As Date 'déclare la variable d (Date à rechercher)[/COLOR]
 
[COLOR=red]If Range("D13") = "" Then Exit Sub 'si la date n'est pas renseignée, sort de la procédure[/COLOR]
[COLOR=red]d = Range("D13").Value 'définit la variable d[/COLOR]
 
With Sheets("Copie") 'prend en compte l'onglet "Copie"
    'définit la variable dest (recherche l'occurrence de D13 dans la colonne A de l'onglet "Copie")
    Set dest = .Range("A9:A" & .Range("A65536").End(xlUp).Row).Find([COLOR=red]d[/COLOR], .Range("A9"), xlValues, xlWhole)
End With 'fin de la prise en compte de l'onglet "Copie"
 
[COLOR=red]With Sheets("Créer") 'prend en compte l'onglet "Créer"[/COLOR]
[COLOR=red]'définit la variable dest (recherche l'occurrence de D13 dans la colonne A de l'onglet "Créer")[/COLOR]
[COLOR=red]Set dest2 = .Range("A9:A" & .Range("A65536").End(xlUp).Row).Find(d, .Range("A9"), xlValues, xlWhole)[/COLOR]
[COLOR=red]End With 'fin de la prise en compte de l'onglet "Créer"[/COLOR]
 
    If Not dest Is Nothing Then 'condition : si il existe au moins une occurrence de dest
        Range("B16").Copy dest.Offset(0, 1) 'copie et colle B16
        Range("D16").Copy dest.Offset(0, 2) 'copie et colle D16
        Range("F16").Copy dest.Offset(0, 3) 'copie et colle F16 dans l'onglet "Copie"
[COLOR=red] Range("F16").Copy dest2.Offset(0, 1) 'copie et colle F16 dans l'onglet "Créer"[/COLOR]
        Range("H16").Copy dest.Offset(0, 4) 'copie et colle H16 dans l'onglet "Copie"
[COLOR=red] Range("H16").Copy dest2.Offset(0, 2) 'copie et colle H16 dans l'onglet "Créer"[/COLOR]
    End If 'fin de la condition
End Sub
 

Pièces jointes

Dernière édition:
- 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
247
Réponses
0
Affichages
377
Retour