cs_Gekco
Messages postés20Date d'inscriptionmercredi 24 mars 2010StatutMembreDernière intervention17 mai 2010
-
19 avril 2010 à 11:52
cs_Gekco
Messages postés20Date d'inscriptionmercredi 24 mars 2010StatutMembreDernière intervention17 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
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)
cs_Gekco
Messages postés20Date d'inscriptionmercredi 24 mars 2010StatutMembreDernière intervention17 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).