IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Problème avec activecell en vba


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4
    Par défaut Problème avec activecell en vba
    Bonjour à tous,

    Je débute en vba et je me trouve face à un problème que je n'arrive pas à résoudre toute seule malgré des recherches sur le net.
    Peut être que l'un d'entre vous aura la réponse.

    Grace à l'entraide j'ai eu un fichier que j'essaie d'adapter à mes besoins.

    Je suis prestataire de service.
    J'ai une feuille (qui s'appelle ANALYSE DE PRODUCTION) avec un tableau qui fait 18 colonnes, la 1ere ligne de saisie est la 5.
    J'y rentre différentes infos concernant les clients, dont les heures prévues à passer par les collaborateurs sur le dossier de chaque client et les heures réellement passées. Ceci afin d'analyser les temps de chaque collaboteur sur chaque client.
    En colonne "o", je voudrais pouvoir voir le cumul (c'est à dire le solde) des heures prévues - heures passées qui sont inscrit dans la colonne précédente la "n" (par le biais d'une saisie dans 1 usf) pour un seul client après avoir faire un filtre automatique sur la colonne correspondant au nom du client.

    J'ai trouvé la formule qui me permets de le faire :
    =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 dans mon usf, 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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    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 4 lignes.

    Le même problème se pose pour mes colonnes q, s, u et w.
    En fait chaque colonne correspond à un collaborateur.

    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.

    Je tourne en rond.

    Merci par avance

    Vero911

  2. #2
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    Bonsoir,

    Vero, ActiveCell ne signifie pas cellule visible mais cellule active, celle sélectionné par ton curseur.

    teste plutôt la propriété Hidden de la ligne où de la colonne suivant ce que tu masque dans ta feuille.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if  .Range("o" & Nl).EnEntireRow.Hidden = false  then
    .Range("o" & Nl).FormulaR1C1 = "=SUBTOTAL(9,R5C14:RC[-1])"
    end if

    tu dis quoi ...

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4
    Par défaut
    Bonsoir

    Merci pour ta réponse.
    Je me suis mal exprimée, je voulais juste dire qu'une fois des données filtrées, il reste dans le tableau seulement quelques lignes que j'appelle visibles.

    la formule : =SOUS.TOTAL(9;$N$5:N5) est rentrée sur ma 1ere ligne.
    Ensuite sur la 2ème ça donne : =SOUS.TOTAL(9;$N$5:N6)
    Puis sur la 3ème : =SOUS.TOTAL(9;$N$5:N7)
    et ainsi de suite

    C'est une formule qui fonctionne très bien lorsque qu'elle est saisie directement dans la 1ere cellule concernée du tableau (pour moi O5)puis étirer vers le bas.

    Lorsque qu'on veut l'adapter pour la coder et que l'on crée une macro pour voir le code qui ressort, elle devient : ActiveCell.FormulaR1C1 = "=SUBTOTAL(9,R5C14:RC[-1])".

    Mais là est mon problème.

    Je vais essayer avec ta methode et voir.
    Je te tiens au courant.

    Véro

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 357
    Par défaut
    Bonjour,

    pour utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.FormulaR1C1 = "=SUBTOTAL(9,R5C14:RC[-1])".
    Vous devez au prealable selectionner la cellule avec quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    activesheet.range("A1").select
    En espérant vous avoir aidé

  5. #5
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    Citation Envoyé par Access Newbie Voir le message
    Bonjour,

    pour utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.FormulaR1C1 = "=SUBTOTAL(9,R5C14:RC[-1])".
    Vous devez au prealable selectionner la cellule avec quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    activesheet.range("A1").select
    En espérant vous avoir aidé
    il ne faut pas utiliser ActiveCell et ActiveSheet mais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.sheets("Feuil1").range("A1").FormulaR1C1 = "=SUBTOTAL(9,R5C14:RC[-1])"

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 357
    Par défaut
    Bonjour,

    Citation Envoyé par Access Newbie Voir le message
    avec quelque chose du genre :
    Je n'ai pas dit qu'il fallait faire rigoureusement ce qui est ecrit, j'essayais plutot de donner des explications sur l'utilisation de activesheet et activecell à Vero

    PS: la méthode de JackOuYA est "best practice".
    PS2 : je ne pense pas que l'utilisation de activesheet et activecell soit a proscrire, le tout étant de bien savoir sur quelle feuille on est et dans quelle cellule on se situe.

Discussions similaires

  1. Problème avec un code Vba Excel
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 23/10/2007, 16h43
  2. Problème avec VLookup sous VBA
    Par julio26 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 20/07/2007, 14h03
  3. Problème avec un TreeView VBA
    Par JojoAlex dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 22/05/2007, 16h59
  4. Problème avec une instruction VBA
    Par Jpeg69 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/05/2007, 12h58
  5. Problème avec open() [Excel VBA]
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 28/11/2005, 16h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo