Recherche humanoïde aimant les défis pour une traduction C - VBA

Enairolf

XLDnaute Nouveau
Bonjour le forum,

Je vous explique rapidement la situation:
*je débute en VBA,
*j'ai une macro à faire,
*j'ai des bases en C,
*j'ai créé en C ce que je veux faire faire à la macro,
*me reste à "traduire" mais je bloque sur la syntaxe et la manière d'utiliser les booléens dans ma macro...

Les traductions "faciles" de For, et If, ca va... Mais le boolean... Aie!

Du coup, je viens vous demander de l'aide!

En pièce jointe le fichier txt.

Merci d'avance aux motivés!
 

Pièces jointes

  • AlgoEnairolf.xls
    30 KB · Affichages: 50
  • AlgoEnairolf.xls
    30 KB · Affichages: 49
  • AlgoEnairolf.xls
    30 KB · Affichages: 55

JNP

XLDnaute Barbatruc
Re : Recherche humanoïde aimant les défis pour une traduction C - VBA

Bonjour Floriane :),
Je ne connais pas le C++, mais en jetant un oeil à ton code, j'ai l'impression que tu essaies de faire
Code:
For I = 1 To I < J
avec un J qui évolue à l'intérieure de la boucle, et ça, ça ne marche pas en VBA :eek:...
Il faut utiliser par exemple
Code:
i = 1
j = 50
Do While i < j
j = j - 1
i = i + 1
Loop
MsgBox i & " : " & j
Si pas ça, désolé :rolleyes:...
Bises :cool:
 

Softmama

XLDnaute Accro
Re : Recherche humanoïde aimant les défis pour une traduction C - VBA

Bonjour,

Il me semble beaucoup beaucoup plus aisé de repartir de zéro : dis-nous ce que tu souhaites faire, et on peut t'indiquer un code qui répond à ton besoin. Plutôt que de traduire ce que tu as réalisé en C. Il y a probablement des fonctions en VBA plus indiquées que celles utilisées en C, et aussi l'inverse...
 

Enairolf

XLDnaute Nouveau
Re : Recherche humanoïde aimant les défis pour une traduction C - VBA

Bonjour,

Je vais tenter d'expliquer ce que je veux, mais c'est pas évident... Je pense que je n'utilise pas le bon vocabulaire mais je vais tenter quand même...

Juste le temps de créer un fichier exemple et de vous l'envoyer!

Merci, =D
 

Enairolf

XLDnaute Nouveau
Le pourquoi du comment...

Re,

Voici (enfin) le fichier avec ce que je cherche à faire exactement, explications de la page 1 à la page 4.

En espérant que ce soit clair...

Merci,
 

Pièces jointes

  • AlgoEnairolf.xls
    68.5 KB · Affichages: 75
  • AlgoEnairolf.xls
    68.5 KB · Affichages: 73
  • AlgoEnairolf.xls
    68.5 KB · Affichages: 79

Enairolf

XLDnaute Nouveau
Re : Recherche humanoïde aimant les défis pour une traduction C - VBA

Re,

@JNP: en effet, tu as raison pour cette partie je vais utiliser un "Do While".

Comment code-t-on un booléen en VBA? Je voudrait traduire l'idée suivante:

pour i allant de 1 à 3
si case (a,i) = 1
alors val = case titre
si case zx= val
alors go to la suite
sinon (si case a1=0)
alors tester case suivante
 

JNP

XLDnaute Barbatruc
Re : Recherche humanoïde aimant les défis pour une traduction C - VBA

Re :),
J'avoue que plus tu expliques, moins je comprends :eek:...
Qu'est ce que tu appelle "coder un booléen" :confused: ?
Si une variable est booléenne, elle ne peux prendre que 2 valeurs : VRAI ou FAUX, sachant que VRAI vaut -1 et FAUX vaut 0. Que veux-tu coder de plus :confused: ?
En VBA, admettons que ta variable soit Condition et à VRAI, le test "Condition = True" est égal à "Condition" et si tu multiplies "Condition * 10", tu obtiendras -10 :rolleyes:.
Après, il faut savoir que comme tu es sous Excel, il y a aussi un type de donnée Range qui contient des objets "Cellule"...
Donc pour décrire une plage, tu peux déclarer
Code:
Dim MaCellule As Range
et utiliser une boucle dans une plage, type
Code:
For Each MaCellule In Range("A1:B10")
par exemple. Et si la cellule correspond à une ligne à masquer
Code:
MaCellule.EntireRow.Hidden = True
masquera la ligne :p...
J'espère que ça te fera avancer :rolleyes:...
Bise et bon courage :cool:
 

Enairolf

XLDnaute Nouveau
Re : Recherche humanoïde aimant les défis pour une traduction C - VBA

Re,

Oui, oui, mes explications ne sont pas très claires... En partie parceque je n'utilise pas le bon vocabulaire à mon avis. En partie aussi parceque je ne sais pas trop comment expliquer ce que je veux faire avec des mots simples! Bref, toujours est-il que tes explications vont m'aider, alors merci!!!

Mais corrige moi si je me trompe: au contraire de ton exemple je voudrai que les cellules ne correspondant pas à "macellule" soient masquées... Il vaut mieux utiliser:
MaCellule.EntireRow.Hidden = False
ou alors
NotMaCellule.EntireRow.Hidden = True
?
 

JNP

XLDnaute Barbatruc
Re : Recherche humanoïde aimant les défis pour une traduction C - VBA

Re :),

Euh :confused:...?

Ne correspondant pas... Valeur définie ? :rolleyes:

Code:
If MaCellule <> 1 Then MaCellule.EntireRow.Hidden = True
va masquer toutes les lignes où la valeur MaCellule est différente de 1. Mais il n'y a pas de commande (à ma connaissance) pour dire de masquer toutes les autres lignes :eek:...
Dond il faut procéder dans l'autre sens, en masquant tout puis en démasquant celles qui sont bonnes, par exemple, les lignes 2 à 10 sont à traiter :
Code:
Dim I As Integer
Range("A2:A10").EntireRow.Hidden = True
For I = 2 To 10
If Range("A" & I).Value <> 1 Then Rows(I).Hidden = False
Next I
Bonne suite :cool:
 

Enairolf

XLDnaute Nouveau
Re : Recherche humanoïde aimant les défis pour une traduction C - VBA

Re :)

J'ai tenté quelque chose comme ça (je suis en train de coder, je n'ai pas encore regardé si ca fonctionnait...)
If macellule = valeur test Then GoTo 2 (second test)
Else: macellule.EntireRow.Hidden = True
Qu'en penses tu?

Si ca ne fonctionne pas je vais utiliser <>, ce sera plus simple.

Encore merci pour ton aide!
 

JNP

XLDnaute Barbatruc
Re : Recherche humanoïde aimant les défis pour une traduction C - VBA

Re :),
Qu'en penses tu?
Aie aie aie, attention à la syntaxe :(...
Soit
Code:
If test1 Then action1 Else action2
soit
Code:
If test1 Then
Action1
Else
Action2
End If
et pour aller dans une autre partie du programme, il faut utiliser des étiquettes et ne pas oublier de sortir avant l'étiquette sinon le code sera exécuté quand même :eek:...
Code:
If Test1 Then GoTo suite
...
Exit Sub
suite:
...
Bon courage :cool:
 

Enairolf

XLDnaute Nouveau
Re : Recherche humanoïde aimant les défis pour une traduction C - VBA

Re,

Génial, avec tout ca je vais bien pouvoir optimiser mon code!!!
En effet, j'ai corrigé mon problème de syntaxe... Ca devrait mieux fonctionner maintenant.

Me reste quelques "détails" à régler, mais j'y suis prèsque! Et dès que c'est fait je publie (fièrement?) le résultat en ligne.

Un grand merci pour ton aide (dont je vais peut être encore avoir besoin... Faut pas crier victoire trop tôt!)
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 472
Messages
2 088 710
Membres
103 930
dernier inscrit
Jibo