Macro excel : le nom de variable apparaît dans la formule excel

Macro excel : le nom de variable apparaît dans la formule excel - VB/VBA/VBS - Programmation

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  :pt1cable:


Message édité par Elee le 31-01-2013 à 18:31:50
Reply

Marsh Posté le 31-01-2013 à 18:31:10   

Reply

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é"" )"


Message édité par boomy29 le 31-01-2013 à 19:25:21

---------------
[Ach] Just dance + cam PS4
Reply

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 ?


Message édité par Elee le 01-02-2013 à 10:30:56
Reply

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à  


---------------
[Ach] Just dance + cam PS4
Reply

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 :-)

Reply

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


---------------
[Ach] Just dance + cam PS4
Reply

Marsh Posté le 01-02-2013 à 14:58:37    

 
              Pour résumer, tout ce qui est entre guillemets n'est pas une variable ‼

Reply

Marsh Posté le 01-02-2013 à 16:01:46    

Marc L a écrit :

 
              Pour résumer, tout ce qui est entre guillemets n'est pas une variable ‼


 
Oui, oui, ça j'avais bien retenu. Je n'avais pas mis de guillemets autour de ma variable plage....

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed