Modifier valeurs selon une colonne

Bonjour,

J'ai un petit soucis pour mettre en place une boucle dans VBA.

Dans le fichier ci-joint, j'ai un onglet "BDD FA" regroupant plusieurs lignes et un onglet "BDD Reprévisions".

Celui-ci est complété à l'aide de la feuille "Reprévison" qui ajoute une ligne par une ligne les valeurs saisies les une après les autres.

Voici le code me permettant de faire cela.

Sub Reprevisionner()

Set fbdd = Sheets("BDD Reprévision")
    tabloA = Range(Cells(1, 1), Cells(2, Cells(1, Columns.Count).End(xlToLeft).Column))
    tabloB = fbdd.Range(fbdd.Cells(1, 1), fbdd.Cells(2, fbdd.Cells(1, Columns.Count).End(xlToLeft).Column))
    ReDim tabloR(1, UBound(tabloB, 2))
    lgn = fbdd.Range("A" & Rows.Count).End(xlUp)(2).Row
    For j = 1 To UBound(tabloA, 2)
        For jr = 1 To UBound(tabloB, 2)
            If tabloB(1, jr) = tabloA(1, j) Then
                tabloR(0, jr - 1) = tabloA(2, j)
            End If
        Next jr
    Next j
    Range(Cells(2, 2), Cells(2, Cells(1, Columns.Count).End(xlToLeft).Column)).ClearContents
    fbdd.Range("A" & lgn).Resize(1, UBound(tabloR, 2)) = tabloR

End Sub

La prochaine étape est que les valeurs saisies viennent modifier les anciennes valeurs présentes dans "BDD FA" selon le numéro de FA. Ceci se fait à l'aide d'un bouton.

Le fichier exemple pour vous illustrer ma demande.

En vous remerciant.

11classeur2.xlsm (92.50 Ko)

Bonjour,

Petite piqûre de rappel pour ceux qui se sont penchés sur mon problème.

J'ai essayé tant bien que mal à parvenir au résultat souhaité à l'aide de ce code-ci :

Sub Reprevisionner()
Application.ScreenUpdating = False
Set fbdd = Sheets("BDD Reprévision")
    tabloA = Range(Cells(1, 1), Cells(2, Cells(1, Columns.Count).End(xlToLeft).Column))
    tabloB = fbdd.Range(fbdd.Cells(1, 1), fbdd.Cells(2, fbdd.Cells(1, Columns.Count).End(xlToLeft).Column))
    ReDim tabloR(1, UBound(tabloB, 2))
    lgn = fbdd.Range("A" & Rows.Count).End(xlUp)(2).Row
    For j = 1 To UBound(tabloA, 2)
        For jr = 1 To UBound(tabloB, 2)
            If tabloB(1, jr) = tabloA(1, j) Then
                tabloR(0, jr - 1) = tabloA(2, j)
            End If
        Next jr
    Next j

Sheets("Reprévision").Activate
Range("C2:G2").Copy
   nomCherche = Cells(2, 2)
   Sheets("BDD FA").Activate
   Set result = Range("A2:A1400").Find(What:=nomCherche, LookIn:=xlValues)
   If result Is Nothing Then
      MsgBox "Non trouvé"
   Else
      Range(result, result.End(xlToRight)).Select
   End If
   ActiveCell.Offset(0, 11).Select
   ActiveCell.PasteSpecial

Sheets("Reprévision").Activate
Range("H2").Copy
   nomCherche = Cells(2, 2)
   Sheets("BDD FA").Activate
   Set result = Range("A2:A1400").Find(What:=nomCherche, LookIn:=xlValues)
   If result Is Nothing Then
      MsgBox "Non trouvé"
   Else
      Range(result, result.End(xlToRight)).Select
   End If
   ActiveCell.Offset(0, 20).Select
   ActiveCell.PasteSpecial
Sheets("BDD FA").Visible = False
Application.ScreenUpdating = True
Sheets("Reprévision").Activate
Range(Cells(2, 2), Cells(2, Cells(1, Columns.Count).End(xlToLeft).Column)).ClearContents
fbdd.Range("A" & lgn).Resize(1, UBound(tabloR, 2)) = tabloR

    Cells(2, 2).Select
End Sub

Cela fonctionne ou du moins je n'ai pas encore vu d'anomalies. Mais j'imagine que ce code n'est pas entièrement optimiser et peut, peut-être, être simplifier.

Rien ne vous y oblige, juste pour vous tenir informer de mon problème.

Merci

14classeur2.xlsm (98.66 Ko)
Rechercher des sujets similaires à "modifier valeurs colonne"