• Initiateur de la discussion Initiateur de la discussion youyou
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Y

youyou

Guest
Bonjour tout le monde,
j'ai créer une nouvelle fonction excel que je n'arrive pas à utiliser ou plus exactement qui me retourne une erreur d'execution(valeur non correcte).
quelqu'un peut m'aider ??
Merci d'avance (c'est très urgent)

Function Search(s As String)

Dim i, j As Integer

i = 0
j = 11


Sheets("Résultat").Cells(10, 3) = Sheets("1").Cells(7, 10)
Sheets("Résultat").Cells(10, 6) = Sheets("1").Cells(7, 7)
Sheets("Résultat").Cells(12, 3) = " & s & "

Do While i < 31
Do While j < 296

If Sheets(i).Cells(j, 1) = " & s & " Then

Sheets("Résultat").Cells(12, 5) = Sheets(i).Cells(j, 2)
Sheets("Résultat").Cells(12, 7) = Sheets(i).Cells(j, 3)
Sheets("Résultat").Cells(i + 16, 2) = Sheets(i).Cells(j, 4)
Sheets("Résultat").Cells(i + 16, 3) = Sheets(i).Cells(j, 5)
Sheets("Résultat").Cells(i + 16, 4) = Sheets(i).Cells(j, 6)
Sheets("Résultat").Cells(i + 16, 5) = Sheets(i).Cells(j, 7)
Sheets("Résultat").Cells(i + 16, 6) = Sheets(i).Cells(j, 8)
Sheets("Résultat").Cells(i + 16, 7) = Sheets(i).Cells(j, 9)
Sheets("Résultat").Cells(i + 16, 8) = Sheets(i).Cells(j, 10)
Sheets("Résultat").Cells(i + 16, 9) = Sheets(i).Cells(j, 11)

End If
j = j + 1
Loop
i = i + 1
Loop

End Function
 
Bonjour youyou

Je pense que l'erreur est provoquée par l'accès de la feuille [/i]index[/i] 0.

Autre chose, avant tes boucles While, tu fixes la valeur de i et de j, ce qui est bien.
Lors de l'exécution du code, au premier passage dans la boucle j prendra les valeurs 11 à 296, et au deuxième passage dans la 2ème boucle While j < 296
(quand I aura la valeur 1), j aura encore la valeur 296 et donc il n'y aura pas de passage dans la boucle.

Ce qui donne :

i = 0
Sheets("Résultat").Cells(10, 3) = Sheets("1").Cells(7, 10)
Sheets("Résultat").Cells(10, 6) = Sheets("1").Cells(7, 7)
Sheets("Résultat").Cells(12, 3) = " & s & "

Do While i < 31
j = 11
Do While j < 296

If Sheets(i+1).Cells(j, 1) = " & s & " Then

@+Jean-Marie
 
lorsque j'ai ce type de souci

je lance la macro pas à pas et/ou dans les boucles je laisse, en phase test, une instruction MSGBOX "I=" & I & " J=" J pour afficher les valeurs de la boucle pour savoir à quel moment çà coince.


par contre comment lancer ? Function Search(s As String) et End Function
(suis qu'un bidouilleur)

J'ai alors remplacer par Sub essai() et End Sub et je crois que çà marche sauf que je n'avais pas créé plus de 3 onglets ("Résultat", "1" et "2")

Je voudrais bien poursuivre mais faut que je me prépare pour le réveillon.

@ l'année prochaine
 
Après correction de JM voilà ce que le çà donne :


Sub essai()

Dim i, j As Integer

i = 0


Sheets("Résultat").Cells(10, 3) = Sheets("1").Cells(7, 10)
Sheets("Résultat").Cells(10, 6) = Sheets("1").Cells(7, 7)
Sheets("Résultat").Cells(12, 3) = " & s & "

Do While i < 31
j = 11
Do While j < 296

If Sheets(i).Cells(j, 1) = " & s & " Then

Sheets("Résultat").Cells(12, 5) = Sheets(i).Cells(j, 2)
Sheets("Résultat").Cells(12, 7) = Sheets(i).Cells(j, 3)
Sheets("Résultat").Cells(i + 16, 2) = Sheets(i).Cells(j, 4)
Sheets("Résultat").Cells(i + 16, 3) = Sheets(i).Cells(j, 5)
Sheets("Résultat").Cells(i + 16, 4) = Sheets(i).Cells(j, 6)
Sheets("Résultat").Cells(i + 16, 5) = Sheets(i).Cells(j, 7)
Sheets("Résultat").Cells(i + 16, 6) = Sheets(i).Cells(j, 8)
Sheets("Résultat").Cells(i + 16, 7) = Sheets(i).Cells(j, 9)
Sheets("Résultat").Cells(i + 16, 8) = Sheets(i).Cells(j, 10)
Sheets("Résultat").Cells(i + 16, 9) = Sheets(i).Cells(j, 11)

End If
j = j + 1
Loop
i = i + 1
Loop

End Sub

Déjà j'ai enregistré celà en SUB (macros) et non Function (connais pas) pour tester
ensuite il faut impérativement avoir les onglets suivants
Résultat
0
1
...
30

redonner la valeur j=11 après chaque fin de boucle Do While j < 296 puisqu'elle est imbriqué dans une autre boucle

Bon là elle ne plante pas mais je ne sais s'il celà donne le résultat escompté

Toutefois là j'ai un doute (c'est dommage que l'on est pas la feuille Excel pour vérifier)

Sheets("Résultat").Cells(12, 5) = Sheets(i).Cells(j, 2)
Sheets("Résultat").Cells(12, 7) = Sheets(i).Cells(j, 3)
Sheets("Résultat").Cells(i + 16, 2) = Sheets(i).Cells(j, 4)
Sheets("Résultat").Cells(i + 16, 3) = Sheets(i).Cells(j, 5)
Sheets("Résultat").Cells(i + 16, 4) = Sheets(i).Cells(j, 6)
Sheets("Résultat").Cells(i + 16, 5) = Sheets(i).Cells(j, 7)
Sheets("Résultat").Cells(i + 16, 6) = Sheets(i).Cells(j, 8)
Sheets("Résultat").Cells(i + 16, 7) = Sheets(i).Cells(j, 9)
Sheets("Résultat").Cells(i + 16, 8) = Sheets(i).Cells(j, 10)
Sheets("Résultat").Cells(i + 16, 9) = Sheets(i).Cells(j, 11)


Tout d'abord certaines des adresses de cellules sont fixes donc la valeur finale sera celle obtenu lors de la dernière boucle (voit pas alors l'intérêt de la boucle)

Je tente d'être plus clair

Sheets("Résultat").Cells(12, 5) : les valeurs vont se succéder pour finalement s'arrêter à celle-ci Sheets(10).Cells(295, 2)

Pareil pour
Sheets("Résultat").Cells(i + 16, 2) : la valeur I est toujours la même dans la boucle J

Enfin comme je disais plus haut si on n'a pas la feuille de départ, difficile de vérifier
 
Bonjour à tous
La différence entre SUB et FUNCTION

SUB est une macro ou procédure que l'on peut appeler par un bouton sur une feuille, un userform ou un e autre procédure

FUNCTION est assimilable aux fonctionx que vous trouvez dans le menu Insertion Foction et que vous pourrez utilisé dans une cellule d'une feuille.Les fonctions que vous créer sont utilisable dans Menu Insertion Fonction dans la rubrique Personnalisés qui apparaît dès qu'il en existe une dans votre code (a développé dans un module)
Ceci est trés interéssant car cela vous permet des traitements lourds dans les cellules. De plus si vous faites évoluer cette fonction les cellules l'utilisant sont implicitement mises à jour.

Je vous fait un petit exemple pour dans la journée

A+ Roland
 
merci tout le monde et désolé pour ce retard forcé.
je n'arrive toujours pas à executer ma fonction qui prends comme argument le nom d'une personne à rechercher dans les différentes feuilles !!
est ce que le résultat d'une fonction doit être une seule valeur qui sera dans la cellule où a été executer la fonction ou ça peut être plusieurs valeurs dans des cellules différentes de la dite feuille !!!
merci d'avance pour votre aide
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
703
Réponses
1
Affichages
265
Réponses
8
Affichages
647
Réponses
4
Affichages
580
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
370
Réponses
3
Affichages
834
Retour