Rajout de texte avec imcrémentation
Bonjour à toutes et à tous
Voilà j'aimerais faire une petite macro pour rajouter du texte dans du code OH script, je m'explique c'est du code pour un programme nommé hopenholdem.
Le but de la manœuvre c'est que sur chaque ligne comme ceci il faut que la macro me trouve le ] ? f$ comme ceci en vert
[quote][ (([($AA) || ($KK)] && f$OpenPPL_StackSize < 7) ] ? f$OpenPPL_RaiseMax :[/quote]
et me colle un code (toujours le même saut le chiffre) avec une incrémentation de +1 a chaque fois sur les lignes qui suivent + la parenthèse en plus au début en rouge.
[quote][ (([($AA) || ($KK)] && f$OpenPPL_StackSize < 7) && log$line_9_Act)] ? f$OpenPPL_RaiseMax :[/quote]
le code suivant sur ligne du dessous serais ça peu importe le contenu
[quote][ ([($AA) || ($KK)] && f$OpenPPL_Raises >= 2) ] ? f$OpenPPL_RaiseMax :[/quote]
deviendrais ceci le rajout du petit morceau + 1 de 9 = 10 et la parenthèse
[quote][ (([($AA) || ($KK)] && f$OpenPPL_Raises >= 2) && log$line_10_Act) ] ? f$OpenPPL_RaiseMax :[/quote]
je sais pas si je me suis bien expliqué je met un fichier joint pour un morceau de code le but de se rajout de && log$line_9_Act) est de quand une action sera faite la ligne sera précisé dans le programme ainsi je pourrais modifier mon code par rapport au numéro de ligne dans le programme et comme il y a environ entre 5000 ou 10000 lignes a faire comme ça ou presque je ne me vois pas les faire manuellement une a une
Ensuite j'espère que excel ne trouvera que les ? f$ réuni car s'il trouve que f$ ou que ? ça va pas le faire pour les changements
Bonjour Muratime, bonjour le forum,
Je t'avoue que je n'ai pas compris quoi faire après avoir trouvé " ] ? f$"... Donc ce premier bout de code permet juste pour le moment d'identifier les lignes qui contiennent ces caractères :
Sub Macro2()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Set O = Worksheets("Feuil1") 'définit l'onglet O
TV = O.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
'si la donnée ligne I colonne 1 de TV contient le texte " ] ? f$" un message indique le numéro de ligne
If InStr(1, TV(I, 1), " ] ? f$", vbTextCompare) <> 0 Then MsgBox "Ligne " & I
Next I 'prochaine ligne de la boucle
End Sub
bah merci ThauThème j'ai essayé le bout de code ça marche bien
je prend la ligne 17 ça devrais donner ça complété en rouge ce sont les rajouts qu'il aura mit avant de passer à la ligne suivante
[ (([($AA) || ($KK)] && f$OpenPPL_StackSize < 7)&& log$line_17_Act)] ?f$OpenPPL_RaiseMax :
par contre il faudra dans le bloc que je modifie tous les ] ? f$ car il est sensible au espace " ] ? f$" est différent de ça "] ? f$" dans la macro l'espace au début du " mais c'est juste un petit détail
Re, c'est Muratime ou Stepaustras ??
Avant de travailler sur un code je voudrais être sûr !...
c'est " ] ? f$" (avec espace au debut) ou "] ? f$" (sans espace au début) qu'il faut trouver ?
À venir une second code...
Pour l'espace t’embête pas je le fera dans le bloc note je mettrais tout a l'identique, je remplacerais tu a qu' a mettre avec espace
Sinon c'est les deux
Re,
Bon regarde ce code. Normalement tu n'auras rien à faire au préalable car il supprime l'espace. Fait quand même une copie des données dans un autre onglet au cas où ça ne conviendrait pas...
Sub Macro2()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim P As Integer
Set O = Worksheets("Feuil1") 'définit l'onglet O
TV = O.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
If InStr(1, TV(I, 1), " ] ? f$", vbTextCompare) <> 0 Then 'condition si les caractères existent
TV(I, 1) = Replace(TV(I, 1), "[ (", "[ ((", 1, 1, vbTextCompare) 'ajoute la parenthèse au début
TV(I, 1) = Replace(TV(I, 1), " ] ? f$", "&& log$line_" & I & "_Act)] ? f$", 1, 1) 'ajoute le texte avec numéro de ligne
End If 'fin de la condition
Next I 'prochaine ligne de la boucle
O.Range("A1").Resize(UBound(TV, 1), 1).Value = TV 'renvoie dans A1 redimensionnée le tableau TV
End Sub
Ok merci
Après suppression de la ligne 10 c'est elle qui fait cette erreur
Re,
Bizarre, je n'ai pas eu cette erreur... Essaie comme ça :
Sub Macro2()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim P As Integer
Set O = Worksheets("Feuil1") 'définit l'onglet O
TV = O.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
If InStr(1, TV(I, 1), " ] ? f$", vbTextCompare) <> 0 Then 'condition si les caractères existent
TV(I, 1) = Replace(TV(I, 1), "[ (", "[ ((", 1, 1, vbTextCompare) 'ajoute la parenthèse au début
TV(I, 1) = Replace(TV(I, 1), " ] ? f$", "&& log$line_" & I & "_Act)] ? f$", 1, 1) 'ajoute le texte avec numéro de ligne
Else
TV(I, 1)=TV(I,1)
End If 'fin de la condition
Next I 'prochaine ligne de la boucle
O.Range("A1").Resize(UBound(TV, 1), 1).Value = TV 'renvoie dans A1 redimensionnée le tableau TV
End Sub
ça a l'air de fonctionner merci
Je vais voir si en faisant par morceau ça ira mieux il me fera la suite comme ça ou en supprimant des lignes inutiles
par contre si je veux continuer les modifs car il c'est arrêté de modifier à la ligne 2437 et que je veuille supprimer tous le texte du haut qu'il a modifier mais rester au numéro de ligne 2437 et continuer vers le bas il faut certainement changer le A1 par A2437 ? et autre
Re,
Comme j'utilise CurrentRegion pour définit le tableau des valeurs TV, il est normal qu'il s'arrête si il rencontre une ligne vide. Essaie comme ça :
Sub Macro2()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Long 'déclare la variable DL (Dernière Ligne)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Long 'déclare la variable I (Incrément)
Set O = Worksheets("Feuil1") 'définit l'onglet O
DL = O.Range("A" & Application.Rows.Count).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne A de l'onglet O
TV = O.Range("A1:A" & DL) 'définit le tableau des valeurs TV
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
If TV(I, 1) <> "" Then
If InStr(1, TV(I, 1), " ] ? f$", vbTextCompare) <> 0 Then 'condition si les caractères existent
TV(I, 1) = Replace(TV(I, 1), "[ (", "[ ((", 1, 1, vbTextCompare) 'ajoute la parenthèse au début
TV(I, 1) = Replace(TV(I, 1), " ] ? f$", "&& log$line_" & I & "_Act)] ? f$", 1, 1) 'ajoute le texte avec numéro de ligne
Else 'sinon
TV(I, 1) = TV(I, 1) 'laise la donnée telle qu'elle est (je pense que ce Esle n'est pas nécessaire...)
End If 'fin de la condition
End If
Next I 'prochaine ligne de la boucle
O.Range("A1").Resize(UBound(TV, 1), 1).Value = TV 'renvoie dans A1 redimensionnée le tableau TV
End Sub
Ok merci bcp j'ai pu tout remplacer
Maintenant que ces lignes sont modifié il y en a d'autre qui n'ont pas les même signes comme celle là
f$myfunc288 && [ (f$OpenPPL_HaveFlush && [f$OpenPPL_RaisesBeforeFlop] && ![(f$OpenPPL_BotIsLastRaiser)]) ] ? 75 * f$RaiseByPercentagedPotsize :
à la place des ] ? f$ ça deviens ] ? 75 * f$ en sachant que le chiffre 75 peu changer ça veux dire 75% du pot mais ce sera toujours un chiffre avec toujours le f$RaiseByPercentagedPotsize : à la fin
en gros ça devrais faire le même principe comme ceci en rouge pour les rajouts
f$myfunc288 && [ ((f$OpenPPL_HaveFlush && [f$OpenPPL_RaisesBeforeFlop] && ![(f$OpenPPL_BotIsLastRaiser)]) && log$line_17_Act) ] ? 75 * f$RaiseByPercentagedPotsize :
En faite j'ai réussi a tout faire
Re,
Je t'avoue qu'avec le code commenté que je t'avais fourni je n'avais aucune intention d'aller plus loin...
Non mais c'est moi qui me suis compliqué la vie il suffisait juste de mettre ça " ] ? " au lieu de ça " ] ? f$"
Mais merci quand même j'ai pu ajouter toutes les lignes