Excel VBA : transposer résultat calcul

Résolu/Fermé
Grandjean - 18 sept. 2011 à 15:20
 Grandjean - 18 sept. 2011 à 18:22
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

A voir également:

2 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
18 sept. 2011 à 16:57
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
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