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 ensuite j'avais pensé tous simplement pour l'incrémentation de prendre le numéro de ligne de excel mais bon.

5exemple.xls (18.00 Ko)

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 en faite pour la suite quand il a trouvé la ligne il faudrait qu'il rajoute juste avant " ] ? f$ " ceci "&& log$line_9_Act)" en supposant qu'il a trouvé la ligne 9 il mettra 9 de line_9_ et rajoute aussi une parenthèse ( au début de la ligne après le premier [ et ainsi de suite quand il trouve la ligne 11 dans mon exemple il trouve " ] ? f$ " et rajoute juste avant " && log$line_11_Act) " et la parenthèse au début.

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 c'est google qui déconne il me connecte automatiquement j'ai pas fais attention j'avais créer un autre compte car je savais pas trop si j'en avait déjà un

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 par contre il me met erreur 400 dans une fenêtre il fait bien la ligne 9 les bon rajouts mais comme la ligne 10 il n'y a pas besoin alors c'est a ce moment que ça doit faire l'erreur 400

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 il m'a modifié un tas de ligne comme je voulais il en reste d'autre a modifier car la fin est différente mais je crois qu'il a remplacé un paquet de ligne 2367 il c'est arrêté là juste avant le code pour le flop il doit pas aimer certaine ligne.

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 ça fonctionne pas d'erreur quand je charge le fichier

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 merci bcp ThauThème

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$" me suis rendu compte après que tous était identique le ] ?

Mais merci quand même j'ai pu ajouter toutes les lignes

Rechercher des sujets similaires à "rajout texte imcrementation"