Excel VBA : transposer résultat calcul

Résolu
Bonjour,

Je travaille sous Excel 2007.
Je suis en train de développer des applications de gestion pour mon association avec Excel, et notamment en utilisant Excel comme base de données.
Dans mon formulaire (construit non pas avec un userform, mais avec une feuille excel classique), j'ai intégré des formules de calcul.
Lorsque je transpose les données, je perd le résultat du calcul.

Y a t'il une solution à ce problème ? J'avoue avoir cherché sur le net sans trouver de solution compréhensible à l'utilisateur que je suis.

Pour faciliter la compréhension, voici la macro que j'utilise pour transposer les données :

Sub Creation_Article()

'Atteindre le formulaire ARTICLE et mémoriser les données
Sheets("Form_Article").Select
Range("B1:B5").Select
Selection.Copy

'test pour identifier ligne libre
Sheets("Base_Article").Select
valeurA2 = Range("A2").Value
If valeurA2 = "" Then
Range("A2").Select
Else
Range("A1").Select
Selection.End(xlDown).Select
ligne_active_baseA = ActiveCell.Row
Range("A" & ligne_active_baseA + 1).Select
End If

'mémorise le numéro de la ligne où coller les données
ligne_active_baseA = ActiveCell.Row

'collage avec transposition
Range("A" & ligne_active_baseA).Select
Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, operation:=xlNone, skipblanks:=False, transpose:=True

'trier les articles par ordre croissant
Range("A1:E1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

'rendre vierge le formulaire
Sheets("Form_Article").Select
Range("B1:B3").ClearContents
Range("B5").ClearContents
Range("B1").Select

'retourner dans le tableau
Sheets("Base_Article").Select
Range("A1").Select

End Sub

Merci par avance pour votre aide.

Bon après-midi,
Jean

2 réponses

  1. Contributeur
    bonjour

    essaies
    Sub Creer_Article()
    Dim lig As Integer
    
    With Sheets("Base_Article")
         lig = .Columns("A").Find("", .Range("A1"), xlValues).Row
         .Cells(lig, "A").Resize(1, 5) = Application.Transpose(Sheets("Form_Article").Range("B1:B5").Value)
         .Range("A2:E" & lig).Sort .Range("A2")
    End With
    
     With Sheets("Form_Article")
         .Range("B1:B3").ClearContents
         .Range("B5").ClearContents
         .Range("B1").Select
    End With
    
    Sheets("Base_Article").Activate
    
    End Sub
    
    0
    1. Merci beaucoup Michel, pour ton aide efficace.

      J'ai "bêtement" copier ta macro et cela fonctionne parfaitement.
      Ta macro a l'air beaucoup plus simple que la mienne en plus, même si je ne comprends pas encore bien les différences, j'espère pouvoir reproduire !
      Encore merci et bonne soirée,
      Jean
      0