1. Décrire le problème sans joindre votre classeur .xls
Pouvez-vous faire une description du problème en présentant entre les balises [code] et [/code] votre tentative de code VBA pour écrire la formule en telle rangée et colonne.
=SI(G6="H";C6+8;SI(G6="M";C6+31;SI(G6="I";C6+93;SI(G6="C";C6))))
Puis la nouvelle formule attendue dans telle autre rangée et colonne incrémentée.
Fournir le .xls même commenté suivi du classique "cela sera plus explicite" est une solution de facilité.
Réussir à décrire le problème sans joindre le classeur .xls donne le plus souvent 50% de la solution.
En plus cela peut éviter que l'on vous répond avec des éléments que vous connaissez déjà. Dans ce cas, sautez les lignes que vous connaissez.
___________
2. Le problème de la formule pourrait être ses coordonnées absolues
De ce que l'on peut voir du problème sans ouvrir votre classeur, votre formule utilise des coordonnées absolues de cellules G6, C6, etc. Dans le chapitre précédent, on n'a mis en rouge les problèmes potentiels.
3. Style L1C1 de référence de cellule
La première chose à faire est de passer Excel en mode L1C1.
Cliquez sur l'Excel menu "Outils" > "Options" > onglet "General"
Cochez l'option [x] L1C1 reference style.
L'entête de colonne de A à Z, etc. passe en coordonnée numérique selon la position du nom de colonne dans l'alphabet.
Ainsi G6 devient rangée 6 colonne 7 soit L6C7 ou en anglais R6C7 avec le R de Row.
4. Passez votre formule en Coordonnée Relative
Réécrire votre formule en coordonnée relative selon le principe RC[index] avec un index relatif pouvant être négatif ou positif par rapport à une colonne donnée, soit dans l'exemple ci-dessous la colonne Q.
Voir chapitre 4. Génération de la méga formule qui est générée en coordonnée relative RC[index] :
1 2 3 4 5 6 7 8
| Sub GenFormuleQ1(ByVal A As Integer, ByVal B As Integer, ByVal C As Integer, ByVal D As Integer)
Dim strFormuleQ1 As String
strFormuleQ1 = "=IF(AND(R5C22*(RC[" & A & "]+RC[" & B & "])>R6C22*(RC[" & C & "]+RC[" & D & _
"]),RC[-16]=1),1,IF(AND(R5C22*(RC[" & A & "]+RC[" & B & "])>R6C22*(RC[" & C & "]+RC[" & D & "]),RC[-16]=0),2,""""))"
' Propagation de la formule sur la colonne Q : version optimisée
Range("Q1:Q6300").FormulaR1C1 = strFormuleQ1
End Sub |
___________
Si la discussion est résolue, vous pouvez cliquer sur le bouton
En bas de ce message s'il vous a apporté des éléments de réponse pertinents, pensez également à voter en cliquant sur le bouton vert
ci-dessous.
Partager