VBA pour remplir une colonne à parti d'une autre avec condition d'une refer

Bonsoir

s'il serait possible de créer un macro pour remplir la colonne P feuille (Récapitulatif) à partir de la Colonne H feuille( BDC) . à condition que la référence doit etre identique).

pour plus d'explication je vous donne un exemple

ex: la cellule P3 feuille (Récapitulatif) doit se remplir à partir de la feuille BDC (colonne H) (dans ce cas la référence qui correspond à la cellule P3 est F2
parceque la référence F2 se trouve cellule G3 et G5 dans la feuille BDC 4+2=6.

merci beaucoup

bye

19document-v01.zip (311.41 Ko)

Bonjour,

Une macro est inutile, avec la formule suivante "=SI(B3<>"";SOMME.SI(BDC!$G:$G;BDC!$G3;BDC!$H:$H);"")" à saisir en BDC!G3 puis à étendre vous obtiendrez le résultat souhaité.

Cdlt,

Cylfo

salut

je regrette de vous informer que ca me convient pas.en plus la colonne P de la feuille Récapitulatif se supprime d'office.

elle doit pas se supprime .elle doit emporter les valeur de la feuille Bdc.

merci beaucoup

bye

bonjour Ambitieux, salut Sylfo

on a la macro "Alerte2Recap" dans le module1 et cette macro est lancée dans votre macro "Worksheet_Activate" de "Recap..."

10document-v10.zip (315.22 Ko)

PS. la formule de Cylfo peut fonctionner (même préférable) si cette macro "Worksheet_Activate" ne supprime pas la colonne Q, donc si vous modifiez ce Q en P dans la ligne suivante

 Range("B3:Q" & Rows.Count).ClearContents

re,

for the fun, les 2 macros combinées ... et donc plus vite

23document-v10.zip (316.06 Ko)

Salut

merci BsAlv pour tes efforts mais je veux que la colonne P (feuille Récapitulatif) soit rempli à partir de la Colonne H feuille( BDC) . à condition que la référence doit etre identique).

pour plus d'explication je vous donne un exemple

ex: la cellule P3 feuille (Récapitulatif) doit se remplir à partir de la feuille BDC (colonne H) (dans ce cas la référence qui correspond à la cellule P3 est F2
parceque la référence F2 se trouve cellule G3 et G5 dans la feuille BDC 4+2=6.

voir les commentaire dans les cellulles P3 P4 P5 (feuille Récapitulatif)

Merci beaucoup

bye

re,

c'est ce qu'il se passe, supprimez le contenu de la plage B3:Q5 de récapitulatif, puis changez de feuille et puis revenez sur cette feuille et vous verrez que toutes les cellules sont de nouveau rempli et celles de la colonne P viennent de la feuille "BDC"

Sub Alerte2Recap()
     Dim Dict, aA, i, j, t, sh, arr, Reference_PN, it, N
     t = Timer
     Application.ScreenUpdating = False
     Set Dict = CreateObject("scripting.dictionary")     'utliser un dictionaire
     Dict.comparemode = vbTextCompare

     '****************** PARTIE "FeuilX" *********************************************
     For j = 2 To 6
          On Error Resume Next
          Set sh = Nothing
          Set sh = Sheets("Feuil" & j)
          On Error GoTo 0
          If sh Is Nothing Then
               MsgBox "la feuille " & Chr(34) & "feuil" & i & Chr(34) & " n'existe pas !!!", vbCritical
          Else
               With sh
                    For i = 3 To .Range("B" & Rows.Count).End(xlUp).Row
                         If .Range("B" & i) <> "" Then
                              Reference_PN = .Range("B" & i)

                              If Not Dict.exists(Reference_PN) Then
                                   ReDim arr(15)
                                   arr(0) = Reference_PN     'reference
                                   arr(1) = .Range("C" & i)     'description
                                   arr(2) = .Range("D" & i)     'quantité
                                   arr(14) = 0     'pour "BDC", RAZ
                                   Dict(Reference_PN) = arr     'écrire vers dictionaire
                              End If

                              it = Dict(Reference_PN)     'données de ce reference dans le dictionaire
                              it(15) = it(15) + .Range("Q" & i)     'cumum des commandes
                              it(4 + j) = "X"
                              Dict(Reference_PN) = it     'écraser ses données dans le dictionaire
                         End If
                    Next i
                    'MsgBox i & "  " & j
               End With
          End If
     Next

     '****************** PARTIE "BDC" *********************************************
     With Sheets("BDC")
          aA = .Range("G3:G" & .Range("G" & Rows.Count).End(xlUp).Row).Resize(, 2).Value     'contenu des colonnes G:H de "BDC"
     End With
     For i = 1 To UBound(aA)
          If Len(aA(i, 1)) > 0 Then
               If Dict.exists(aA(i, 1)) Then
                    it = Dict(aA(i, 1))
                    it(14) = it(14) + aA(i, 2)     'cumuler les quantitiés dans le dictionaire
                    Dict(aA(i, 1)) = it      'écraser ses données dans le dictionaire
               End If
          End If
     Next

     '****************** COLLER DANS "RECAPITULATIF" **************************************
     With Sheets("récapitulatif").Range("B3")
          .Resize(200, 14).ClearContents
          .Resize(200, 1).NumberFormat = "@"
          N = Dict.Count
          If N = 1 Then Dict.Add [Rnd], Dict.items()(0)
          If Dict.Count > 0 Then
               .Resize(N, UBound(arr) + 1).Value = Application.Index(Dict.items, 0, 0)
          End If
     End With

     'MsgBox Timer - t
End Sub

re,

ma macro de dimanche soir et celle de hier, elles fonctionnent ou pas ? Si vous effacez la colonne et vous lancez la macro "Alerte2Rcap", vous recevez les résultats voulus ?

Salut

après avois faire le premier test le macro marche bien.

je vais faire dautres test juste pour confirmer

merci beaucoup pour ton travail

bye

Salut

après avois faire le premier test le macro marche bien.

je vais faire d'autres test juste pour confirmer.

c'est quoi la différence entre le macro 1 et 02?

Merci beaucoup pour ton travail

bye

re,

la 2eme macro fait les 2 choses voulues en même temps, donc collecter vos données des feuilles "FeuilX" et puis les données de la feuille "BDC" et tout cela presque instantément.

Rechercher des sujets similaires à "vba remplir colonne parti condition refer"