Petite erreur d'instruction !!

Résolu
cs_Gekco Messages postés 20 Date d'inscription mercredi 24 mars 2010 Statut Membre Dernière intervention 17 mai 2010 - 19 avril 2010 à 11:52
cs_Gekco Messages postés 20 Date d'inscription mercredi 24 mars 2010 Statut Membre Dernière intervention 17 mai 2010 - 19 avril 2010 à 16:47
Bonjour,

Voici mon petit soucis:
Je possède dans une base de données une colonne avec les référence d'un produit. Dans une autre base de données je dispose de textes (classés par thème) dans lesquels apparaissent certaines de ces références produit. Je souhaite créer une colonne (dans la premiere base) qui me donne le nombre de textes dans lesquels apparaissent la référence. J'ai donc tout d'abort commncé par cette formule : =NB.SI(Feuil2!B:B;"*0211*") puisque si j'écris =NB.SI(Feuil2!B:B;E1) cela ne fonctionne pas.

Et comme donc j'ai plus de 2000 lignes je me suis dis que j'allais écrire une petite macro pour remplir la colonne. Seulement, j'ai une petit soucis dans mon code que je n'arrive pas à résoudre si quelqu'un peut m'aider.
Voici le code :

Sub NBTexte2()

    For i = 6 To 10
        Range("M" & i).Select
        ActiveCell.FormulaR1C1 = "=COUNTIF(Feuil2!C[-11],"" * Range("E" & i).Value * "")"
    Next
End Sub


Merci

T

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
19 avril 2010 à 13:03
Salut
On suppose que tu es sous Excel.
Si tu dois recopier 2000 fois une même instruction, suffit de sélectionner la cellule avec ton calcul + les 2000 lignes suivantes (par exemple avec un Ctrl-Flèche vers le bas) et d'appuyer sur Ctrl-B.

Si tu as une erreur, tu pourrais dire laquelle.
En supposant que ta cellule "E & i" renferme le chiffre 4012, ta syntaxe donnerait ceci :
=COUNTIF(Feuil2!C[-11]," * 4012 * ")

-1- Je ne pense pas que C[-11] soit un format correct
Essaye RC[-11]
-2- Dans le deuxième paramètre, tu dois mettre une chaine composée d'une étoile, suivie de la valeur de ta cellule de la même ligne, colonne E, puis terminée par une nouvelle étoile.
Si tu dois insérer une variable à l'intérieur d'une chaine, il faut ressortir de cette chaine, exemple :
monTexte = "*" & maVariable & "*"
a) Dans ton cas, tu as inutilement ajouté des espaces autour des * : pas bon
b) en sortant de la chaine pour ajouter ta variable, cela pourrait donner cela :
"=COUNTIF(Feuil2!C[-11],""*" & Range("E" & i).Value & "*"")"

Pour le fun, plutôt que de jongler avec les Range("E" i), tu peux utiliser Offset :
"=COUNTIF(Feuil2!C[-11],""*" & ActiveCell.Offset(0, -8).Value & "*"")"
0 pour le nombre de ligne à ajouter
-8 pour faire référence à la cellule 8 colonnes avant

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
cs_Gekco Messages postés 20 Date d'inscription mercredi 24 mars 2010 Statut Membre Dernière intervention 17 mai 2010
19 avril 2010 à 15:20
Bonjour Jack et merci pour tes infos !!

Le :
"=COUNTIF(Feuil2!C[-11],""*" & ActiveCell.Offset(0, -8).Value & "*"")"

marche nickel, c'est exactement ce que j'avais besoin.
(deplus, j'en apprends à chaque fois, c'est bien sympas).

T

Nb : Désolé, si parfois mes questions manquent d'indication mais merci encore d'y répondre.
0
cs_Gekco Messages postés 20 Date d'inscription mercredi 24 mars 2010 Statut Membre Dernière intervention 17 mai 2010
19 avril 2010 à 16:47
Re bonjour Jack,

Je me permet de te demander encore un petit peu d'aide sur un soucis pour lequel je galère depuis un certain temps.
J'alimente une listbox avec ce code (code que tu m'avais fournit, par ailleurs) :

Dim aCC(0 To 2000, 0 To 50)
    For m = 1 To Sheets("Feuil2").Range("A65536").End(xlUp).Row
        If Not Sheets("Feuil2").Rows(m + 1).Hidden Then
                For t = 0 To Colonne + 1
                    aCC(m, t) = Sheets("Feuil2").Cells(m + 1, t + 1)
                Next t
        End If
    Next m
        
UserForm1.ListBox1.Clear
UserForm1.ListBox1.ColumnCount = 51
UserForm1.ListBox1.ColumnWidths = "20;20;20;20;25;150;150;150;50;50;50;50;50"
UserForm1.ListBox1.List() = aCC
UserForm1.Show


Or il s'avère que l'une de mes colonnes sont des liens hypertextes et ils n'apparaissent pas dans la listbox1 (texte brut uniquement). J'ai bien tenté d'écrire ceci :

Private Sub ListBox1_Click()
Dim v As Integer

Worksheets("Feuil2").Select
For v = 2 To 14
    If Cells(v, 13).Value = UserForm1.ListBox1.Text Then
    Worksheets("Feuil2").Cells(v, 13).Hyperlinks.Item.Follow
    End If
NextEnd Sub


Mais en vain...(surtout que comme tu l'as pu le voir je suis plutôt débutant dans le VBA).


Je t'en remercie.

T
0
Rejoignez-nous