VBA-Remplacer

Résolu
Bonjour,
Apres avoir créer une macro me permettant de Copier des lignes d'un tableau et les ajouter à la suite je voudrai faire en sorte que certaines données se trouvant dans la partie a copier soient changé uniquement dans la partie qui sera collée en dessous de mon tableau. C'est a dire remplacer tous les "FXCORP" par des "FXMASS" mais seulement dans la partie qui sera ajouté a la suite de mon tableau. Voici ce que je suis parvenu a faire mais quand il sagit de remplacer c'est tout le tableau qui change.
je vous remercie d'avance pour votre aide.
Sub test()
Dim i As Integer
Dim arret As Boolean

i = 2

    Do
        If (ActiveSheet.Range("A" & i)) = "" Then
            arret = True
        Else
            i = i + 1
        End If
    Loop While arret = False
    
    Range("A" & i - 10 & ":DL" & i - 1).Copy
    Range("A" & i).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Dim Paste As Worksheet
For Each Paste In ThisWorkbook.Worksheets
    Paste.Cells.Replace What:="FXCORP-DA", Replacement:="FXMASS-DA"
Next Paste
End Sub 


Configuration: Windows / Chrome 70.0.3538.110

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

2 réponses

  1. Bonjour,

    Essaie :

    Sub test()
    Dim i As Integer
    Dim arret As Boolean
    
    i = 2
    
    Do
    If (ActiveSheet.Range("A" & i)) = "" Then
    arret = True
    Else
    i = i + 1
    End If
    Loop While arret = False
    
    Range("A" & i - 10 & ":DL" & i - 1).Copy
    Range("A" & i).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Selection.Replace "FXCORP-DA", "FXMASS-DA"
    End Sub


    Cordialement.

    Daniel
    0
    1. Merci beaucoup ça marche a merveille
      0
    2. Bonjour,

      Il serait plus propre d'écrire :
      Sub test()
      Dim r As Range
        Set r = ActiveSheet.Columns(1).Find("*", , , , , xlPrevious).Offset(-9).Resize(10, 116)
        r.Copy r.Offset(10)
        r.Offset(10).Replace "FXCORP-DA", "FXMASS-DA"
      End Sub

      Edit : Ou si A1 est vide
      Sub test()
      Dim r As Range
        With ActiveSheet.Columns(1)
          Set r = .Find("", .Cells(2), , , , xlNext).Offset(-10).Resize(10, 116)
        End With
        r.Copy r.Offset(10)
        r.Offset(10).Replace "FXCORP-DA", "FXMASS-DA"
      End Sub
      0
    3. @Patrice33740d'accord merci beaucoup pour vos reponses
      0
  2. Une derniere chose je voudrais aussi que le resultat de la formule qui ce trouve dans la partie du tableau a copier soit figée comment faire?
    0
    1. Donc, dans ce cas la formule ne sera pas conservée :
      Sub test()
      Dim r As Range
        With ActiveSheet.Columns(1)
          Set r = .Find("", .Cells(2), , , , xlNext).Offset(-10).Resize(10, 116)
        End With
        r.Copy r.Offset(10)
        r.Offset(10).Value = r.Value
        r.Offset(10).Replace "FXCORP-DA", "FXMASS-DA"
      End Sub
      0
    2. Qu'est-ce que tu entends par "figé" ?

      Daniel
      0
    3. Annuler la formule donc juste avoir le resultat quand je clique dans la cellule
      0
    4. @Patrice33740Oui mais je veut que la formule soit annulée seulement dans la partie du tableau que je vais copier pas au niveau de la partie qui sara collée a la suite
      0
    5. Les formules se trouvent en colonne G
      0