Macro Excel, demande d'aide d'un débutant

  • Initiateur de la discussion Initiateur de la discussion Fab117
  • 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 !

F

Fab117

Guest
Bonjour,
Je suis en train de faire une macro pour Excel.
Le but de la macro est :
- Le premier onglet contient une série de chiffres entiers qui changeront au cours du temps.
- Les onglets suivants contiennent des chiffres entiers qui eux ne changeront pas.
- Le but est que lorsque je change les chiffres du 1er onglet, je puisse aller sur n'importe quel autre onglet, excécuter la macro et qu'il compare les chiffres de cet onglet avec ceux du premier onglet
- Finalement, au moyen d'une MsgBox, qu'il me dise le nombre de chiffre commun et qu'après il inscrive le chiffre dans une cellule bien précise de l'onglet en cours de consultation.

En fait, le premier onglet contient les chiffres du dernier tirage du lotto et les autres onglets contiennent les chiffres que j'ai joué.

Mes problèmes :
- Pour appliquer la même macro sur les différents onglets, je voudrais qu'il mémorise l'onglet actif d'où est exécutée la macro pour y revenir après avoir été enregistrer les variables (chiffres) du 1er onglet (pour l'instant, je suis obligé de nommer l'onglet où il doit revenir).

Il va sur le premier onglet et attribue cahque chiffre à des variables définies comme Integer :
Sheets("Tirages").Select
Set Tirage1erNumero = Range("D3")
...
Pour revenir à l'onglet d'où a été excécutée la macro :
Sheets("1er ticket en cours").Select
Set Controle1erNumero = Range("D2")
...

- Pour chaque billet, il y a plusieurs tirages possibles. Les dates sont inscrites dans une colonne. Pour un tirage donné, je souhaite donc qu'il inscrive le résultat dans la bonne case. Il s'agit d'une case de la colonne B, mais la ligne change à chaque fois. J'ai donc créé une InputBox où il demande le numéro de la ligne où il doit inscrire le résultat. La valeur entrée est stockée dans une variable définie comme Integer. Mon problème est qu'au moment d'inscrire le résultat, je ne sais pas comment lui indiquer qu'il doit le mettre dans la case B- Ligne.

Ligne = InputBox("Indiquer le numéro de la ligne où indiquer le nombre
de numéros corrects", "Ligne")

- Finalement, pour chaque numéro du ticket il compare le chiffre avec tous ceux du tirage. Si les chiffres coincident il donne la valeur 1, sinon 0. A la fin, je lui fais sommer tout le tableau pour connaitre le résultat.

' Controle du 1er numéro choisi
If Controle1erNumero > Tirage1erNumero Or Controle1erNumero <
Tirage1erNumero Then
Range("D4") = "0"
Else: Range("D4") = "1"
End If
If Controle1erNumero > Tirage2emeNumero Or Controle1erNumero <
Tirage2emeNumero Then
Range("D5") = "0"
Else: Range("D5") = "1"
End If
...

'Calcul du nombre de bons numéros

Bonsnumeros = "=SUM(R[-12]C:R[-8]C[6])"
'A noter toutes les variables sont définies comme Integer

Cette manière de faire fonctionne bien lorsqu'après je lui demande d'inscrire la variable Bonsnumeros dans une cellule. Par contre, lorsqu'il doit me l'indiquer dans une MsgBox, ça ne marche pas :
' Annonce des résultats dans une boite de dialogue
MsgBox "Nombre de bons numéros :" & Bonsnumeros, 0, "Résultats"

Il inscrit dans la MsgBox "=SUM(R[-12]C:R[-8]C[6])"

Merci pour vos conseils.
 
salut.
cela devait marcher pour avoir le resultat du tirage.2 conditions verifie ou change la colonne utilisee 'pour le prog les nombres sont dans la colonne a' et ensuite lance la macro de la feuille ou tu veux verifier le resultat.

Sub verife()
With ActiveSheet
compteur = 0
For rang = 1 To Sheets(1).Range("a:a").End(xlDown).Row
For rang1 = 1 To .Range("a:a").End(xlDown).Row
If Sheets(1).Cells(rang, 1) = .Cells(rang1, 1) Then
compteur = compteur + 1
Exit For
End If
Next
Next
MsgBox "resultat " & compteur
ligne = InputBox("Indiquer le numéro de la ligne où indiquer le nombre de numéros corrects", "Ligne")
.Cells(Val(ligne), 2) = compteur
End With
End Sub
 
- 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
4
Affichages
177
Réponses
4
Affichages
243
  • Question Question
Microsoft 365 Excel - Macro
Réponses
14
Affichages
573
Retour