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

  • Initiateur de la discussion Fab117
  • Date de début
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.
 
V

vincent

Guest
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
 

Discussions similaires

Réponses
12
Affichages
247

Statistiques des forums

Discussions
312 294
Messages
2 086 895
Membres
103 404
dernier inscrit
sultan87