Menu

VBA-Remplacer [Résolu]

Messages postés
11
Date d'inscription
samedi 1 décembre 2018
Dernière intervention
15 décembre 2018
-
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.
Afficher la suite 

Votre réponse

2 réponses

Messages postés
292
Date d'inscription
mardi 5 juin 2018
Dernière intervention
16 décembre 2018
0
Merci
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
Monsieur_Malik
Messages postés
11
Date d'inscription
samedi 1 décembre 2018
Dernière intervention
15 décembre 2018
-
Merci beaucoup ça marche a merveille
Patrice33740
Messages postés
7447
Date d'inscription
dimanche 13 juin 2010
Dernière intervention
15 décembre 2018
-
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
Monsieur_Malik
Messages postés
11
Date d'inscription
samedi 1 décembre 2018
Dernière intervention
15 décembre 2018
> Patrice33740
Messages postés
7447
Date d'inscription
dimanche 13 juin 2010
Dernière intervention
15 décembre 2018
-
d'accord merci beaucoup pour vos reponses
Commenter la réponse de danielc0
Messages postés
11
Date d'inscription
samedi 1 décembre 2018
Dernière intervention
15 décembre 2018
0
Merci
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?
danielc0
Messages postés
292
Date d'inscription
mardi 5 juin 2018
Dernière intervention
16 décembre 2018
-
Qu'est-ce que tu entends par "figé" ?

Daniel
Monsieur_Malik
Messages postés
11
Date d'inscription
samedi 1 décembre 2018
Dernière intervention
15 décembre 2018
-
Annuler la formule donc juste avoir le resultat quand je clique dans la cellule
Monsieur_Malik
Messages postés
11
Date d'inscription
samedi 1 décembre 2018
Dernière intervention
15 décembre 2018
-
Les formules se trouvent en colonne G
Patrice33740
Messages postés
7447
Date d'inscription
dimanche 13 juin 2010
Dernière intervention
15 décembre 2018
-
Si tu veux que la valeur de la formule soit "figée" pour la plage initiale :
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.Value = r.Value
  r.Offset(10).Replace "FXCORP-DA", "FXMASS-DA"
End Sub

PS : Tu devrais essayer de comprendre comment fonctionne le code, ça éviterait ce genre de question !
Monsieur_Malik
Messages postés
11
Date d'inscription
samedi 1 décembre 2018
Dernière intervention
15 décembre 2018
> Patrice33740
Messages postés
7447
Date d'inscription
dimanche 13 juin 2010
Dernière intervention
15 décembre 2018
-
je suis debutant je maitrise pas parfaitement. Mais merci quand même pour ton aide
Commenter la réponse de Monsieur_Malik