Fonction VBA sélection de cellules

Bonjour, A Tous

Merci de m'aider si vous avez un peu de temps

j'ai une fonction en VBA pour chercher une chaine de caractères dans une colonne

par exemple le prénom PIERRE et dans la colonne d'a coté je voudrai mettre le mot oui

si le prénom Pierre est trouvé en face sur la même ligne

les Plages de recherche et d'affichage du résultat sont en paramètres dans la fonction

If Variable_1 <> 0 Then

Nb_Occurence = Nb_Occurence + 1
xl = Plage_Result(Cpt).Row
yl = Plage_Result(Cpt).Column
'MsgBox xl & "---" & yl
MsgBox Cells(xl, yl).Address(RowAbsolute:=False, ColumnAbsolute:=False)

' Tout fonctionne sauf cette ligne
ActiveSheet.Range(Cells(xl, yl).Address(RowAbsolute:=False, ColumnAbsolute:=False)).Select

msgbox converti correctement cell en A1 et les cellules sont corrects, j'ai bien par exemple C4, C11,C12...

Edit modo : merci de mettre le code entre balises SVP avec le bouton </>

mais je n'arrive pas a sélectionner en vba les cellules pour écrire oui dans celles ci j'ai essayé avec l'instruction INDIRECT mais sans résultat également indirect(A1)

Si une personne a une idée, merci d'avance

Serge

Bonsoir Serge,

Quand vous postez une demande sur le forum, merci de faire attention au formatage du texte SVP
De plus le code doit être mis entre balise

Sinon concernant votre demande :

1) Pensez à définir vos variables, là je ne vois rien
2) le code n'est pas entier, il n'est pas simple de le comprendre
3) Joindre un fichier à votre demande est toujours plus simple pour la compréhension et règle le problème n°2
4) Vous pouvez essayer

ActiveSheet.Cells(xl, yl).Select

A+

Bonjour, BrunoM45

Merci pour votre réponse, mais hélas cela ne fonctionne pas également

J'ai fait autrement, en modifiant la fonction avec l'instruction instr

Afin de tester une chaîne de caractères sur une cellule

et après recopier la formule sur l'ensemble de la plage

mais je préfère travailler directement sur une plage de cellules

pour le moment je n'ai pas accès à mon pc

samedi soir ou dimanche matin je posterai le fichier

avec la fonction qui me pose un problème

encore merci pour votre aide et votre patience

Très bon week-end

cordialement

Bonjour, Bruno45

Et Encore merci pour votre aide

En Piece jointe le fichier avec les deux fonctions

Nombre_Occurence_1 et Nombre_Occurence_11

les instructions mises en commentaires sont celles qui ne fonctionne pas

En Colonne B il y a les Personnes et en C j'aimerai que la fonction écrive oui si il y a une occurrence sur la recherche

exemple rechercher PIERRE en Colonne B et Afficher oui en face en colonne C

Pourtant dans msgbox j'ai bien la référence de la cellule, mais après..

le nombre d'occurrence est correct

Je me demande si on peut écrire dans une cellule an direct dans une fonction.............

6excel-test.xlsm (17.30 Ko)

Bonjour Serge

1) Une fonction est là pour vous renvoyer une valeur, pas pour inscrire directement dans une cellule.

2) La fonction est définie comme devant retourner un entier, or vous voulez écrire du texte

3) voici ce que vous auriez simplement pu écrire

Function ValeurTrouvée(Cel As Range, Chaine As String) As String
  If InStr(1, Cel, Chaine) > 0 Then
    ValeurTrouvée = "Oui"
  End If
End Function

Ceci dit, pourquoi ne pas utiliser une formule directement dans votre tableau

En C3 à recopier vers le bas

=SI(ESTERREUR(CHERCHE("PIERRE";B3));"-";"OUI")

A+

Bonjour, Bruno45

Merci pour votre réponse et pour votre aide, je voulais passer par une fonction car cela permet d'avoir une gestion dynamique de la plage de cellules de test, la plage est donnée en paramètre a l'appel de la fonction, j'ai pensé à cela après avoir créer une fonction qui teste une cellule que l'on recopie ensuite vers le bas

Je pensais également que dans le test SI quand il est vrai et que le séquenceur d'Excel pointe sur la cellule active il était possible d'écrire sur autre cellule de la même ligne et décalé d'une colonne

Mais vous avez raison une fonction, une action et un résultat

Encore merci pour votre aide

Très bon week-end

je mettrai le post a résolu dans la journée

Cordialement

serge

Bonjour Sergemath, BrunoM45,

S'il est vrai qu'

Une fonction est là pour vous renvoyer une valeur, pas pour inscrire directement dans une cellule.

On peut tout de même l'utiliser comme complément à une procédure événementielle. Ce qui permet de répondre à une demande spécifique

je voulais passer par une fonction car cela permet d'avoir une gestion dynamique de la plage de cellules de test,

Voir le fichier modifié ci-dessous. Les cellules B1 et C1 de la feuille 1 sont réservées à la fonction et à la comptabilisation.

Elles ne sont pas spécifiques au tableau présent. Il suffit d'ajouter d'autres tableaux mais de bien inscrire les plages cibles.

Bonjour

Merci pour votre aide

je ferais un essai ce soir

cordiakement

Bonjour, Bruno45

Merci Beaucoup pour votre aide et votre attention

Le Fichier fonctionne parfaitement et correspond tout a fait a ce que je voulais faire au départ

sans y parvenir vraiment

J'ai remarqué que dans la Cellule B1 s'affiche les cellules Résultats de la Colonne C, c'est très utile

Il ne me reste plus qu'a travaillé pour adapter le fichier a mon travail de départ

et a bien comprendre le contenu et la fonction de la macro évènementielle

Encore Merci

Très Bon Lundi férié je l'espère pour vous

Cordialement

Rechercher des sujets similaires à "fonction vba selection"