Rendre un champ dynamique pour le calcul, càd indépendant de sa position physique

  • Initiateur de la discussion Initiateur de la discussion Sebast
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Sebast

XLDnaute Impliqué
Bonjour à toutes et à tous,

jusqu'à présent, dans un tableau, je procède au calcul (simple multiplication) de la façon suivante :

CA = kg * prix

La colonne CA est la 15e de mon tableau
la colonne kg est la 10e
la colonne prix unitaire est la 7e

donc pour faire le calcul, j'utilise dans une boucle qui balaie toutes les lignes

Code:
Cells(i, 15).Value = Cells(i, 10) * Cells(i, 7)

Je cherche à savoir si on ne peut pas plutôt travailler avec des champs désignés, de manière à s'affranchir de la position physique de la colonne dans le tableau.
Quelque chose comme CA(i)=kg(i)*prix(i), i n'étant ici que pour passer d'un enregistrement à l'autre

En effet, si on insère des colonnes dans le tableau, la colonne CA devient la nième, la colonne kg devient la (n+1) etc. et du coup,

Cells(i, 15).Value = Cells(i, 10) * Cells(i, 7) renvoie n'importe quoi … (ce qui est normal ici !)

Peut-on manipuler le contenu d'une cellule en s'adressant à elle par son nom ? Si oui, quelle est la syntaxe ?

Merci d'avance pour votre aide
 
Re : Rendre un champ dynamique pour le calcul, càd indépendant de sa position physiqu

Bonjour,

Avec Excel 2010, il est pratique de présenter ses données sous la forme de tableau (onglet Accueil / Mettre sous forme de tableau) lorqu'il s'agit de liste de données (notamment issue d'une extraction quelconque).
Le fait de présenter sous forme de tableau offre de nombreux avantages :
- la sélection automatique d'une colonne (par son titre et non par son numéro)
- la saisie automatique de formule pour une colonne (le fait d'écrire la formule sur 1 ligne l'applique à toute la colonne)
- la mise en forme, les filtres, ...

Pour ton exemple, si je présente mes données sous forme de tableau, le tableau est nommé TDet, la colonne résultat CA et les colonnes utilisées pour le calcul Qté et Punit, la macro ci-dessous réalise ce que tu demandes (sans boucle, et quelquesoit l'endroit où se situe les colonnes)

Code:
Sub Macro3()
    Range("TDet[CA]").Select
    ActiveCell.FormulaR1C1 = "=[@PUnit]*[@Qté]"
End Sub

Cette macro a été obetue avec l'enregistreur !!!

Caillou
 
Re : Rendre un champ dynamique pour le calcul, càd indépendant de sa position physiqu

Bonjour,

merci pour cette réponse, effectivement simple et abordable : j'aurais dû y penser avant, avec l'enregistreur !

Dans le cas où je travaille sur un ordi portable avec Excel 2003, donc sans tableau, existe-t-il une solution avec champs désignés ?

Merci d'avance
 
Re : Rendre un champ dynamique pour le calcul, càd indépendant de sa position physiqu

Bonjour,

Cela pourrait-être quelque chose comme ceci:
(avec étiquettes de colonnes en ligne 1)


Code:
Sub CalculCA()
Dim colCa As Variant, colKg As Variant, colPrix As Variant
Dim c As Range
With Sheets("Feuil1")
    colCa = Application.Match("CA", .Range("1:1"), 0)
    colKg = Application.Match("KG", .Range("1:1"), 0)
    colPrix = Application.Match("PRIX", .Range("1:1"), 0)
    If IsError(colCal) Or IsError(colKg) Or IsError(colPrix) Then
        MsgBox "Vérifier la présence des étiquettes de colonnes 'CA', 'KG','PRIX'"
        Exit Sub
    End If
    For Each c In .Range(.Cells(2, colPrix), .Cells(Rows.Count, colPrix).End(xlUp))
        .Cells(c.Row, colCa) = .Cells(c.Row, colKg) * .Cells(c.Row, colCa)
    Next
End With
End Sub

A+
 
Re : Rendre un champ dynamique pour le calcul, càd indépendant de sa position physiqu

Bonjour Hasco,

merci pour ta solution. Je pensais que ce serait plus simple, avec une lecture plus intuitive.
C'est bien pour ça qu'au fil du temps, Excel a amélioré le produit et que c'est limpide avec 2010 !

Encore merci à tous
 
Re : Rendre un champ dynamique pour le calcul, càd indépendant de sa position physiqu

Bonjour

Sous excel 2003, la fonctionnalité des tableaux existe mais sous le nom de listes. Les tableaux ne sont qu'une amélioration des listes
Ce lien n'existe plus
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
341
Réponses
7
Affichages
843
  • Question Question
Microsoft 365 Programme trop lent
Réponses
12
Affichages
1 K
Retour