Macro excel : le nom de variable apparaît dans la formule excel - VB/VBA/VBS - Programmation
Marsh Posté le 31-01-2013 à 19:24:33
Ton code il est pas très propre
pour moi ta plage ça ne peut pas marcher
je comprends que tu veux compter les OK : obj T4 réalisé de la colonne AC
ligne = Range("A1048576" ).End(xlUp).Row
ActiveCell.Formula = "=COUNTIF(AC2:AC" & ligne & ",""OK : obj T4 réalisé"" )"
Marsh Posté le 01-02-2013 à 10:27:52
Super !!! Ça fonctionne !
Je me doute que mon code n'est pas terrible, au boulot ils m'ont accordé 3 jours de formation sur VBA et 2 jours ont consisté à recopier bêtement des lignes sans avoir de réponses à nos questions...du coup je "bidouille" plus qu'autre chose.
En tout cas merci beaucoup pour ton aide.
Je ne suis pas certaine de comprendre pourquoi ça fonctionne...
Quelle est la différence entre : ActiveCell.Formula et ActiveCell.FormulaR1C1 ?
Pourquoi est-ce que je ne peux pas mettre la variable plage alors que la variable semblait bonne ?
Marsh Posté le 01-02-2013 à 10:54:56
je vais essayer d'être clair dans mes explications
avec Formula c'est pas interprété donc on peut lui passer le texte en brute comme j'ai fait
avec FormulaR1C1 (notation RowNoLigneColumnNoColonne ) il faut connaitre la cellule active déjà et ensuite l’écriture n'est pas très simple
pour ton exemple si la cellule active c'est A1 alors ça donnerai un truc
ActiveCell.FormulaR1C1 = "=COUNTIF(RC[29]:R[Ligne]C[29],""OK : obj T4 réalisé"" )"
en gros ma plage commence sur la même ligne et sur 29 colonne vers la droite et fini a la ligne de la variable et colonne 29
et je suis pas sur que ça marche mon truc
ton range marche mais je vois pas comment l'utilisé directement là
Marsh Posté le 01-02-2013 à 11:01:13
Ok, je retiens et je vais voir si du coup je peux pas essayer de simplifier à d'autres endroits ou l'enregistreur m'a mis aussi R1C1.
Merci encore :-)
Marsh Posté le 01-02-2013 à 11:07:28
l'enregisteur est sympa pour te donner une idée
mais après il faut revoir pour gagner en performance
mais après si tu colles le code de l’enregistreur sur le forum pas mal de monde pourra t'aider et ça donne une bonne base de travail
Marsh Posté le 01-02-2013 à 14:58:37
ReplyMarsh Posté le 01-02-2013 à 16:01:46
Marc L a écrit : |
Oui, oui, ça j'avais bien retenu. Je n'avais pas mis de guillemets autour de ma variable plage....
Marsh Posté le 31-01-2013 à 18:31:10
Bonjour à tous,
je débute en language VBA et après plusieurs jours passés à me prendre la tête sur une macro je bloque sur l'intégration de ma formule NB.SI....
Voici la partie du code qui semble poser problème :
ligne = Range("A1048576" ).End(xlUp).Row
Dim plage As Range
Set plage = Range(Cells(2, 29), Cells(ligne, 29))
ActiveCell.FormulaR1C1 = "=COUNTIF(plage,""OK : obj T4 réalisé"" )"
En fait je n'ai pas de message d'erreur dans VBA mais par contre quand je retourne sur ma feuille de calcul, il y a écrit #NOM? dans la case en question et lorsque je regarde dans la barre de formule excel j'ai ça :
=NB.SI(plage;"OK : obj T4 réalisé" )
Le nom "plage" (nom de ma variable donc) ne devrait pas apparaître !
D'autant plus que lorsque je suis dans VBA et que j'approche la souris, la valeur de la variable ligne est la bonne ainsi que la valeur des cellules de la plage....
Je bloque et j'ai beau chercher sur internet je ne dois pas taper les bons termes de recherche car je trouve des trucs qui n'ont rien à voir avec mon problème....
Si vous avez une petite idée, je suis preneuse parce que là je craqueeeeeeeee
Message édité par Elee le 31-01-2013 à 18:31:50