Next en simultané

Résolu
Bonjour à tous,

J'ai un code qui me permet d'éliminer le texte qui se trouve entre un "%" et un ".".

Mon problème est que j'aimerais que pour une ligne_Origine=3 le résultat s'inscrive sur la ligne_Destination=3, puis pour une ligne_Origine=4 le résultat s'inscrive sur la ligne_Destination=4 ect... et que pour le moment ce n'est pas ce qui se passe !

Merci beaucoup de votre aide !

J'ai également une autre problématique : j'aimerai que mon code s'exécute jusqu'à la première case vide de la colonne 6 => colonne_Origine (c'est à dire enlever For Ligne_Destination = 3 To 100
For Ligne_Origine = 3 To 100 )

Sub parenth()
Dim Ligne_Origine As Integer, Colonne_Origine As Integer
Dim pos1 As Integer
Dim pos2 As Integer

Dim Ligne_Destination As Integer, Colonne_Destination As Integer
Dim cellule_Destination As String

For Ligne_Destination = 3 To 100
For Ligne_Origine = 3 To 100
Colonne_Destination = 7

Colonne_Origine = 6

temp = Cells(Ligne_Origine, Colonne_Origine)
temp = Replace(temp, " .", " 0.")
pos1 = InStr(temp, "%")
pos2 = InStr(pos1, temp, ".")
While pos1 <> 0 And pos2 <> 0
If pos1 > 1 Then
tmp = Left(temp, pos1)
End If
If pos2 > 0 Then
tmp = tmp & Mid(temp, pos2 + 1)
End If
If pos1 + pos2 = 0 Then tmp = temp
temp = tmp
pos1 = InStr(pos1 + 1, temp, "%")
pos2 = InStr(pos1 + 1, temp, ".")
Wend
parenthese = Trim(tmp)

Cells(Ligne_Destination, Colonne_Destination) = parenthese

Next Ligne_Origine

Next Ligne_Destination

End Sub


Merci beaucoup encore une fois ! Ce forum est d'une grande aide lorsqu'on est débutant !

3 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour,

    si j'ai bien compris votre demande:

    entre un "%" et un "." avec votre code le "%" reste et le "." disparait, je n'ai pas change

    Sub parenth()
    Dim Ligne As Integer, Colonne_Origine As Integer
    Dim pos1 As Integer, pos2 As Integer
    Dim Ligne_Destination As Integer, Colonne_Destination As Integer

    With Worksheets("feuil1")
    Colonne_Origine = 6
    Colonne_Destination = 7
    derlig1 = .Cells(3, Colonne_Origine).End(xlDown).Row
    For Ligne = 3 To derlig1
    temp = Cells(Ligne, Colonne_Origine)
    temp = Replace(temp, " .", " 0.") '?????????
    pos1 = InStr(temp, "%")
    pos2 = InStr(pos1, temp, ".")
    Cells(Ligne, Colonne_Destination) = Trim(Left(temp, pos1) & Right(temp, Len(temp) - pos2))
    Next Ligne
    End With
    End Sub
    1. Bonjour,

      Merci beaucoup de votre aide !

      Oui c'est ça, sauf que dans une cellule il peut y avoir plusieurs fois la compilation %TXT. à supprimer d'où la partie (je pense)

      If pos1 + pos2 = 0 Then tmp = temp
      temp = tmp
      pos1 = InStr(pos1 + 1, temp, "%")
      pos2 = InStr(pos1 + 1, temp, ".")


      Votre code marche pour la première suppression, mais pas les suivantes...

      Pour la ligne avec des ???? : elle permet de modifier .NB en 0.NB

      Entre temps, pour améliorer le rendu, j'ai changé une ligne
      Cells(Ligne_Destination, Colonne_Destination) = LCase(parenthese)

      Afin d'écrire le résultat en minuscule !

      Merci encore !
      1. Bonjour,
        Entre le votre et le mien, j'ai réussi à avoir la bonne compilation !

        Merci beaucoup !!