Problème avec activecell dans excel

vero911 Messages postés 5 Statut Membre -  
vero911 Messages postés 5 Statut Membre -
Bonjour à tous,

Voilà, je débute dans le vba et j'ai un souci avec une formule.
J'ai un fichier construit grace à l'entraide que j'essaie de modifier selon mes propres besoins.
Dans une feuille j'ai un tableau qui fait 23 colonnes.
Il reprend différentes info dont les temps prévus et passés par chaque collaborateur sur chaque client.
En colonne "o", je voudrais faire le cumul de la conne "n" où s'incrit les heures prévues - les heures passées et que la formule fonctionne également lorsque je selectionne uniquement un seul client avec le filtre automatique en entete de colonne.

J'ai trouvé la formule :
=SOUS.TOTAL(9;$N$5:N5)
Je la recopie dans les cellules du dessous et tout marche bien, mon total s'ajuste bien en fonction des cellules visibles.

J'ai donc voulu la coder mon userform, j'ai crée une macro pour voir ce qu'il allait me dire et il en ressort :
ActiveCell.FormulaR1C1 = "=SUBTOTAL(9,R5C14:RC[-1])"

J'ai donc ensuite mis ce code au niveau des lignes en gras ci-dessous dans la partie :

With Sheets("ANALYSE DE PRODUCTION")
Nl = .Range("A65536").End(xlUp).Row + 1 'ligne ou j'écris
.Range("l" & Nl).Value = TextBox2.Value 'Prix HT
.Range("j" & Nl).Value = TextBox1.Value 'Heures
.Range("c" & Nl).Value = ComboBox1.Value 'COLLABORATEUR
.Range("d" & Nl).Value = ComboBox2.Value 'CLIENTS
.Range("e" & Nl).Value = ComboBox3.Value 'FACTURE/AVOIR
.Range("g" & Nl).Value = ComboBox4.Value 'Mission
.Range("m" & Nl).FormulaR1C1 = "=RC[-1]-RC[-2]"
.Range("F" & Nl).Value = TextBox4.Value 'N° Facture avoir
.Range("h" & Nl).Value = ComboBox5.Value 'Tâches
.Range("i" & Nl).Value = TextBox3.Value 'Complémnent d'intitulé
.Range("A" & Nl).Value = DTPicker1.Value 'Date
.Range("B" & Nl).Value = "S" & DatePart("ww", CDate(DTPicker1.Value), 2, 2)
.Range("n" & Nl).Value = TextBox5.Value 'S
.Range("p" & Nl).Value = TextBox6.Value 'N4
.Range("r" & Nl).Value = TextBox7.Value 'N3
.Range("t" & Nl).Value = TextBox8.Value 'N2
.Range("v" & Nl).Value = TextBox9.Value 'EC
.Range("o" & Nl).ActiveCell.FormulaR1C1 = "=SUBTOTAL(9,R5C14:RC[-1])"
.Range("q" & Nl).ActiveCell.FormulaR1C1 = "=SUBTOTAL(9,R5C16:RC[-1])"
.Range("s" & Nl).ActiveCell.FormulaR1C1 = "=SUBTOTAL(9,R5C18:RC[-1])"
.Range("u" & Nl).ActiveCell.FormulaR1C1 = "=SUBTOTAL(9,R5C20:RC[-1])"
.Range("w" & Nl).ActiveCell.FormulaR1C1 = "=SUBTOTAL(9,R5C22:RC[-1])"

End With

Et là rien ne va plus, il me met un message d'erreur qui me renvoie sur ces mêmes 4 lignes.

J'ai fait un essaie en enlevant le mot ActiveCell et là la formule marche mais evidement sur toutes les cellules et pas seulement les visibles.

Si quelqu'un saurait comment m'aider à résoudre ce problème.
Je travaille sur excel 2002

Merci par avance

Vero
A voir également:

4 réponses

gbinforme Messages postés 15481 Date d'inscription   Statut Contributeur Dernière intervention   4 730
 
bonjour

Ces lignes me paraissent fonctionner correctement à partir du moment où tu as 4 lignes titre :
.Range("o" & Nl).FormulaR1C1 = "=SUBTOTAL(9,R5C14:RC[-1])"
.Range("q" & Nl).FormulaR1C1 = "=SUBTOTAL(9,R5C16:RC[-1])"
.Range("s" & Nl).FormulaR1C1 = "=SUBTOTAL(9,R5C18:RC[-1])"
.Range("u" & Nl).FormulaR1C1 = "=SUBTOTAL(9,R5C20:RC[-1])"
.Range("w" & Nl).FormulaR1C1 = "=SUBTOTAL(9,R5C22:RC[-1])"
0
vero911 Messages postés 5 Statut Membre
 
Bonjour,

Merci de m'avoir répondu.

oui, sans activecell elle fonctionne bien.

Mais je voudrais qu'elle puisse fonctionner aussi uniquement sur les cellules visibles, excel me dit que la formule est :

.Range("o" & Nl).ActiveCell.FormulaR1C1 = "=SUBTOTAL(9,R5C14:RC[-1])"
.Range("q" & Nl).ActiveCell.FormulaR1C1 = "=SUBTOTAL(9,R5C16:RC[-1])"
.Range("s" & Nl).ActiveCell.FormulaR1C1 = "=SUBTOTAL(9,R5C18:RC[-1])"
.Range("u" & Nl).ActiveCell.FormulaR1C1 = "=SUBTOTAL(9,R5C20:RC[-1])"
.Range("w" & Nl).ActiveCell.FormulaR1C1 = "=SUBTOTAL(9,R5C22:RC[-1])"

Seulement là ça ne marche plus, j'ai un message d'erreur qui me renvoie sur ces lignes.

Merci

vero911
0
gbinforme Messages postés 15481 Date d'inscription   Statut Contributeur Dernière intervention   4 730 > vero911 Messages postés 5 Statut Membre
 
bonjour

en mettant tes 5 lignes ainsi, les unes sous les autres, cela n'a aucune chance de fonctionner car tu voudrait ainsi que la cellule active soit à la fois sur 5 colonnes différentes et pour excel c'est forcément une aberration.

Range("o" & Nl).FormulaR1C1 ne sert qu'à déterminer le positionnement dans le tableau de la formule et ensuite la formule vit sa vie sans avoir besoin d'"activecell" et en plus ta formule fonctionne tout à fait correctement si tu effectues un filtre sur tes données.

Enlèves ton "activecell" qui "plante" et tout est bon !
0
vero911 Messages postés 5 Statut Membre > gbinforme Messages postés 15481 Date d'inscription   Statut Contributeur Dernière intervention  
 
Bonsoir et merci,

Désolé de ma réponse tardive mais j'ai eu beaucoup de boulot.

Je tiens à dire qu'effectivement, sans activecell elle fonctionne impec.
Mon problème sur le filtre venait du fait que j'ai une macro copier/coller :
Sub testcc()
'
' Macro enregistrée le 06/12/2008
Application.ScreenUpdating = False
With Sheets("ANALYSE DE PRODUCTION")
    Columns("K:W").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Range("A1").Select
End With
 
Application.ScreenUpdating = True
 
End Sub

qui ne plait pas à la formule de cumul lors du filtre automatique (en haut de colonne).
Apparament, elle a besoin de se"voir"(je ne sais pas trop comment l'exprimer) pour fonctionner.

J'ai donc modifié Columns("K:W").Select par Columns("K:M").Select afin de sortir mes colonnes cumuls de ce copier/coller et le filtre est ok sauf toutefois sur 1 petit point.

Peut être saurez vous pourquoi, lorsque j'applique le filtre, le cumul se recalcule bien sur mes lignes visibles mais il reste systematiquement la dernière ligne saisie.
exemple :
ligne 5 : client Z (première ligne saisie)
ligne 6 : client A
ligne 7 : client A
ligne 8 : client B
ligne 9 : client X
ligne 10 : client A
ligne 11 : client X (dernière ligne saisie)

Si je choisie client A avec le filtre, je ne verrais bien que les lignes 6,7 et 10 mais aussi la 11.

Je ne comprends pas.

Merci à vous et bonne soirée

Véro
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Bonjour,
et c'est quoi les cellules "Visibles" ?
Ce serait pas plutôt sur les cellule VIDES ?
Ce n'est pas la ligne puisque tu traite tout sur la même ligne ?
A+
0
vero911 Messages postés 5 Statut Membre
 
Bonjour,

Ce sont les lignes qui restent visibles après un application filtre (automatique en ce qui concerne mon fichier)

Vero
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
OK,
alors tu peu faire avec...

    If Row(Nl).Hidden = False Then
        Range("o" & Nl).FormulaR1C1 = "=SUBTOTAL(9,R5C14:RC[-1])"
        ...
        ...
    End If

A+
0
vero911 Messages postés 5 Statut Membre
 
Bonsoir,

Merci pour ta réponse

j'essaie et reviens donner la réponse.
0