Insérer formule dynamique avec VBA
Bonjour à tous!
J'ai un code VBA qui calcule la longueur de certaines cellules pour en faire une somme. Si la somme est supérieure à 256; la cellule devient rouge. Sauf que voilà; après éditions des cellules en question; la somme change, et je ne sais pas comment procéder pour que la somme se calcule automatiquement selon ce qui est dans les différentes cellules.
Si quelqu'un peut m'aider ce serait super!!
Merci d'avance!!!
Mon code:
Sub LenLabels()
Dim i As Double
Dim LastRow As Double
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
With Sheets("Sheet1")
LastRow = .Range("B" & Rows.Count).End(xlUp).Row
For i = 2 To LastRow
.Cells(i, 11) = Len(.Cells(i, 10)) + Len(.Cells(i, 1)) + Len(.Cells(i, 1)) + 5
If .Cells(i, 11) > 256 Then
.Cells(i, 11).Interior.ColorIndex = 3
End If
Next i
End With
MsgBox "Too long labels are spotted in red in column K, please take a look!"
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End SubBonjour,
Merci de joindre un fichier à ta demande.
Cdlt.
Bonjour,
Voici un fichier. Désolée pour l'oubli!
Je veux calculer la longueur des cellules A+J+5 et afficher la somme en colonne K.
Merci d'avance!!
Bonjour, Salut Jean-Eric !
Bon !
cellules A+J+5
Une cellule a une colonne, désignée normalement par une lettre, et une ligne désignée par un nombre, moyennant quoi on la trouve, par exemple : A1, J2, B5...
Mais ce que tu indiques pourrait désigner des colonnes : A, J ou des lignes : 5, mais pas des cellules !
Je veux calculer la longueur des cellules
Une cellule, ça a une largeur (et une hauteur), mais pas de longueur !
Si tu veux parler de la longueur du contenu, si c'est du texte, il a un nombre de caractères, c'est peut-être ça que tu nommes longueur, mais il serait mieux alors de l'indiquer explicitement si on veut savoir où l'on va..., si c'est un nombre, cela pourrait être sa valeur, ou son nombre de caractères à condition de le convertir en texte !
Si autre contenu, je ne sais quelle évaluation on pourrait en faire... Tu devrais être un peu plus précis !
Pour ce qui est de ton code :
- Un numéro de ligne est un nombre entier (soit type Long ou Integer), il ne sert donc à rien de typer tes variables en Double !
- Désactiver le calcul automatique ne sert généralement à rien (sauf dans quelques cas limites rares, mais dans ces cas cela ne suffit généralement pas pour arranger les choses !), j'attends toujours que quelqu'un m'en démontre l'effet (mesuré), et pour ma part, si j'ai dû à plusieurs reprises forcer le recalcul dans une macro ou temporiser pour attendre qu'il soit achevé, je ne l'ai jamais désactivé et considère cette commande inutile lors de l'exécution d'une macro.
- Inutile de réactiver le rafraîchissement de l'affichage à la fin, Excel le fait automatiquement.
- Mais ton code ne nous apprend rien sur le calcul des "longueurs" à opérer !
Cordialement.
Bonjour,
Je vois que je n'ai pas été claire du tout, désolée
Donc en fait, ce que je veux, c'est calculer la longueur du contenu d'une cellule.
Dans le fichier que j'ai joint, je voudrais en K2, mettre une formule qui calcule:
La longueur du contenu en A2+la longueur du contenu en J2 + 5; 5 qui est le chiffre et non pas en lien avec le fichier lui-même.
Et de même pour toutes les lignes avec du contenu en A2.
Mon code fait partie d'une longue liste d'autres codes. Pour le moment, je calcule la somme avec VBA; mais ce n'est pas dynamique car une fois que j'édite J2, K2 reste identique et je voudrais éviter de créer un code séparé pour MAJ cette somme. Mais si c'est mieux je procèderai ainsi.
Et merci pour les autres remarques, je les prends en compte!
A2 et J2 (seulement) ou toute la ligne A2:J2 ?
Pas de réponse !
=SOMMEPROD(NBCAR(A2:J2))+5au cas où il faut additionner les caractères de toute la ligne...
Si seulement les 2, il suffit d'en faire l'addition... pas de difficulté.
Et pour colorer en rouge, une MFC !
Aucun besoin de mobiliser VBA pour ça.
Je ferme ton fichier.
Cordialement.