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 :

Recopie les valeurs de la feuille A vers la feuille B


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Recopie les valeurs de la feuille A vers la feuille B
    Bonjour à tous !

    Via du VBA et son bouton associé..

    Je tente de recopier toutes les valeurs saisies dans la colonne AA (plage AA13 jusqu'à "indefini", plage non fixe) de ma feuille "Formulaire", vers ma feuille "Demande" (colonne V).

    La condition : La valeur de la colonne E (de Formulaire) et D (de Demande) soit égale.

    merci pour le coup de pouce

  2. #2
    Membre averti
    Bonjour,

    Essaye ceci :

    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
    Sub Test()
     
    dim WsForm as worksheet, WsDde as worksheet
    set WsForm = thisworkbook.worksheets("Formulaire")
    set WsDde = thisworkbook.worksheets("Demande")
     
    with wsform
     
    if .range("E1")=.range("D1") then
     
    .range("AA13:AA" & .cells(rows.count,27).end(xlup).row).copy destination:=WsDde.range("V1")
     
    end if
     
    end with

  3. #3
    Membre habitué
    Merci Trystan441.

    Nous y sommes presque .. il faut que la valeur copie se place sur la bonne ligne.. cela ne peut pas être "V1" comme destination.. mais plutot la ligne où la valeur repérée est identique.

    En fait il faudrait balayer la Colonne AA (onglet Formulaire) pour repérer les valeurs à recopier vers la colonne V (onglet Demande) où AA (onglet Formulaire) est = D (onglet Demande)

  4. #4
    Membre averti
    Re,

    Pas de soucis mais peut être que tu aurais pu l'expliquer dans ton premier message

    Une question : Cas concret

    Copie vers la ligne identique :
    Valeur en E10 et D10 égale -> Copie de AA10 (Formulaire) vers V10 (Demande)

    OU

    Copie vers la première ligne vide
    Valeur en E10 et D10 égale -> Copie de AA10 (Formulaire) vers V5 (Demande)

    Laquelle de ces deux possibilités est la bonne ?

  5. #5
    Membre habitué
    Effectivement, j'ai merdé sur l'explication ! désolé

    donc..: "xx" etant le n° de la ligne..

    Valeur en E"xx" (Formulaire) et D"xx" (Demande) égale => copie de AA"xx" (Formulaire) (même ligne que E"xx"), vers V"xx" (Demande)

    les valeurs qui sont égales ne sont pas forcement sur la même ligne entre les 2 onglets...
    par contre, sur l'onglet Formulaire, oui

    doit y avoir une histoire de bloucle quelque part à faire..

    oulà!! j'espère que je suis clair!

  6. #6
    Membre averti
    Je t'avoue que je n'ai pas tout compris mais tu vas me dire si le code ci-dessous te convient !

    Je n'ai pas testé :

    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 Transfert
     
    dim i as long, j as long
     
    dim WsForm as worksheet, WsDde as worksheet
    set WsForm = thisworkbook.worksheets("Formulaire")
    set WsDde = thisworkbook.worksheets("Demande")
     
    dim TabForm() as variant, TabDde() as variant
    tabform=wsform.usedrange.value
    tabdde=wsdde.usedrange.value
     
     
    for i = 2 to ubound(tabform,1)
    for j = 2 to ubound(tabdde,1)
     
    if tabform(i,5)=tabdde(j,4) then tabdde(j,22)=tabform(i,27)
     
    next j
    next i
     
    Wsdde.Range("A1").Resize(UBound(Tabdde, 1), UBound(Tabdde, 2)) = Tabdde
     
    end sub

  7. #7
    Membre habitué
    Magnifique !!!
    est ce possible d'avoir un peu de commentaires afin de voir commetn tu fais ca ??
    j'ai besoin de comprendre et d'apprendre

  8. #8
    Membre averti
    Ah ben oui bien sur, j'ai envoyé trop vite !

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Sub Transfert
     
    'Variables compteur
    dim i as long, j as long
     
    'Déclaration des objets Worksheets
    dim WsForm as worksheet, WsDde as worksheet
    set WsForm = thisworkbook.worksheets("Formulaire")
    set WsDde = thisworkbook.worksheets("Demande")
     
    'Déclaration des variables tableaux
    'Ces tableaux "virtuels" permettent d'accélérer la procédure
    dim TabForm() as variant, TabDde() as variant
    tabform=wsform.usedrange.value 'Charge les données de la feuille Formulaire dans le tableau TabForm
    tabdde=wsdde.usedrange.value 'Charge les données de la feuille Demande dans le tableau TabDde
     
     
    for i = 2 to ubound(tabform,1) 'Boucle de la cellule 2 jusqu'à la dernière ligne du tableau tabform
    for j = 2 to ubound(tabdde,1) 'Boucle de la cellule 2 jusqu'à la dernière ligne du tableau TabDde
     
    'La condition qui te permet de venir attraper la donnée qui t'intéresse
    if tabform(i,5)=tabdde(j,4) then tabdde(j,22)=tabform(i,27) 'On évite le presse papier en faisant référence directement à la cellule où est située notre valeur
     
    next j
    next i
     
    'Cette ligne permet de venir coller les données du tableau virtuel sur ta feuille WsDde
    'Pour voir comment ça fonctionne, je t'invite à suivre le lien que je t'ai mis ci-dessous
    Wsdde.Range("A1").Resize(UBound(Tabdde, 1), UBound(Tabdde, 2)) = Tabdde
     
     
    'FIN'
     
     
    end sub


    Si tu ne connais pas les tableaux virtuels, suis le lien suivant : Les variables tableaux

  9. #9
    Membre habitué
    Nickel !

###raw>template_hook.ano_emploi###