Problème avec activecell dans excel
vero911
Messages postés
5
Statut
Membre
-
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
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:
- Problème avec activecell dans excel
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
- Déplacer colonne excel - Guide
- Trier dans excel - Guide
4 réponses
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])"
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])"
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+
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+
Bonjour,
Ce sont les lignes qui restent visibles après un application filtre (automatique en ce qui concerne mon fichier)
Vero
Ce sont les lignes qui restent visibles après un application filtre (automatique en ce qui concerne mon fichier)
Vero
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
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 !
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 Subqui 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