Commande VBA copier/coller sous condition ou rechercheV

Résolu
Gilles.DR315 Messages postés 28 Statut Membre -  
Gilles.DR315 Messages postés 28 Statut Membre -
Bonjour,

Je cherche une macro "copier/coller" me permettant l'action suivante :

Valeur de 3 Cellules à copier (A1:A3) de la Feuil1 en Feuil 2 colonne A
Sur la feuil1 en colonne B j'ai comme référence (une date) exemple :
En B1 : 10/06/2013
En B2 : 10/05/2019
En B3 : 10/09/2023

Les 3 valeurs (A1:A3) doivent se copier sur la feuil2 au même ligne colonne A ou l'on retrouve ces même dates.
Ainsi en Feuil2 on a en colonne B des dates qui servent d'échéancier (exemple en B1 : 10/03/2013, B2 : 10/04/2013.....B154 : 10/10/2025)

Si la commande fonctionne en 1 clic on doit avoir sur cet exemple
A1:A3 de la feuille 1 copié en A6, A77, A129

Merci d'avance de votre appui.

3 réponses

  1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonjour

    Par exemple :

    Sub copie()

    For n = 1 To 3
    d = Range("B" & n).Value
    dlg = Sheets("Feuil2").Range("B" & Rows.Count).End(xlUp).Row

    For t = 1 To dlg
    If Sheets("Feuil2").Range("B" & t) = d Then Sheets("Feuil2").Range("A" & t).Value = Sheets("Feuil1").Range("A" & n).Value

    Next t
    Next n

    End Sub

    Cdlmnt
    1
  2. Gilles.DR315 Messages postés 28 Statut Membre 1
     
    Merci bien.
    Cdt
    0
  3. Gilles.DR315 Messages postés 28 Statut Membre 1
     
    Bonjour,

    Je reviens sur ce sujet

    La formule fonctionne mais partiellement.
    J'arrive à copier mes valeurs de Feuil1 vers Feuil2

    Mais ce qui me manque, c'est de ne rien faire si la cellule est vide en Feuil1
    Exemple ci-dessous. Avec E52:E54 (Dans ces cellules il y a les montants à envoyer en Feuil2) dans F52:F54 (Les dates)
    Si F53 F54 sont vide, et que je veux copier E52 çà me provoque une erreur.

    Mon erreur d'execution survient uniquement si F52:F54 sont vides, E52:E54 ne sont pas concernés par l'erreur si elles sont vide.
    C'est donc les dates qui posent problème

    Ou je dois mettre si F53:F54 est vide, alors ne rien faire.
    comment l'écrire.

    Merci de votre appui.

    Sub envoyerdonnées()
    

    For n = 52 To 54

    d = Range("F" & n).Value

    dlg = Sheets("Feuil2").Range("K" & Rows.Count).End(xlUp).Row

    For t = 1 To dlg

    If Sheets("Feuil2").Range("K" & t) = d Then Sheets("Feuil2").Range("E" & t).Value = Sheets("Feuil1").Range("E" & n).Value

    Next t

    Next n

    End Sub
    0
    1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      Bonjour,

      Je ne comprends pas, j'ai copié ta macro et je l'ai fait tourner avec des cellules vides en F23 et 54 et pas d'erreur, la copie se fait bien
      Peut être que tes cellules ne sont pas vraiment vides (formule, liaison avec une autre feuille ou classeur ?)

      Essaye de rajouter cette ligne apres le For n=52 to 54
      If IsDate(Range("F" & n)) Then

      et tu mets un End if entre nExt t et Next n

      Cdlmnt
      0
    2. Gilles.DR315 Messages postés 28 Statut Membre 1
       
      Merci.
      J'ai du reprendre cette macro.
      J'ai rajouté If IsDate(Range("F" & n)) Then

      et çà marche
      0
    3. Gilles.DR315 Messages postés 28 Statut Membre 1
       
      Bonjour,

      Je reviens sur ce post.
      Sur cette ligne
      For n = 14 To 15

      Je n'arrive à attribuer à n : les valeurs 14,15,43,44 et 45

      Comment puis-je faire ?
      Les virgules, les points virgules ne marchent pas.
      çà doit être tout bête. mais je cale.

      Merci
      0
    4. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      Bonjour

      Les valeurs dans For doivent se suivre de 1 si rien d'indiqué, ou du pas indiqué mais qui sera toujours le même ex For n= 2 to 8 step 2 avec le pas de 2 n prendra successivement les valeurs 2, 4, 6 et 8

      Dans ton cas tu dois faire 2 boucles successives

      For n= 14 to 15
      instructions
      next n

      For n= 43 to 45
      instructions
      next n


      NB si les instructions sont les mêmes tu peux ne les écrire qu'une seule fois dans une autre Sub, que tu appelles par ex envoidonnees et à laquelle tu fera appel dans chaque boucle

      For n= 14 to 15
      envoidonnes
      next n

      etc..

      Cdlmnt
      0
    5. Gilles.DR315 Messages postés 28 Statut Membre 1
       
      Merci bien pour ce conseil.
      0