Copier une ligne en fonction d'une valeur présente dans une cellule coller a la suite de la base

joejoe

XLDnaute Nouveau
Bonjour,

Je cherche à intégrer un remplacement de donnée dans ma boucle :

Sub recopie
Dim L as integer
For L = 1 to 11
If cells(L+1,24) <> "" then
Rows(L+1).copy
Range("A566666").end(xlup).offset(1,0).select
Activecell.Pastespecial
(voila ce que je voulais rajouter :
Activecells.Columns(11).replace = ("D"),("C") )
Else
End If
Next Sub

Auriez vous une solution en vous remerciant d'avance.
 
Dernière édition:

soan

XLDnaute Barbatruc
Bonsoir joejoe,

je te propose ce code VBA :
VB:
Sub recopie()
  Dim dlg&, lig&: Application.ScreenUpdating = 0
  dlg = Cells(Rows.Count, 1).End(3).Row + 1
  For lig = 2 To 12
    If Cells(lig, 24) <> "" Then
      Cells(lig, 1).Resize(, 5).Copy
      Cells(dlg, 1).PasteSpecial -4163
      dlg = dlg + 1
    End If
  Next lig
  Columns(11).Replace "D", "C", 1, 1, True
End Sub
le .Resize(5) est si les colonnes de ton tableau sont de A à E ;
tu dois éventuellement adapter le 5 selon ton vrai tableau :

si tu as 2 colonnes de plus, donc A à G, met 7 au lieu de 5 ;
si tu as 2 colonnes de moins, A à C, met 3 au lieu de 5.

si tu as besoin d'une adaptation, tu peux la demander,
mais dans ce cas, joins un fichier exemple avec des
données fictives (pas de données confidentielles).

à te lire pour avoir ton avis. :)


soan
 

joejoe

XLDnaute Nouveau
Sub recopie()

Dim L As Integer
Dim DernLigneBase

Range("A1").Select
DernLigneBase = Range("A65536").End(xlUp).Row
i = 0

For L = 1 To (DernLigneBase - 1)
If Cells(L + 1, 24) <> "" Then
Rows(L + 1).Copy
Range("A566666").End(xlUp).Offset(1, 0).Select
ActiveCell.PasteSpecial ' Colle bien la ligne demandé
'ActiveCell(X, 11).Value = "C" je cherche ˆ modifier la cellule colonne 11 "D" par "C"
i = i + 1
Cells(DernLigneBase + i, 11) = "C"
' Je vais devoir copier une deuxi me fois cette ligne
Range("A566666").End(xlUp).Offset(1, 0).Select
ActiveCell.PasteSpecial
i = i + 1
Cells(DernLigneBase + i, 6) = 467000 'cette fois modifier le compte colonne (6)par " 467000"
Cells(DernLigneBase + i, 5) = "X"
Cells(DernLigneBase + i, 7) = Cells(DernLigneBase + i, 24)
Range(Cells(DernLigneBase + i, 13), Cells(DernLigneBase + i, 18)).ClearContents
End If
Next

End Sub
 

soan

XLDnaute Barbatruc
@joejoe

ton fichier en retour. :)

tu es sur la feuille "Base" ; j'ai amélioré ta présentation ;
tu auras juste à augmenter le zoom après les essais.

fais Ctrl e ; vérifie tous les résultats. ;)

regarde Module1 (j'ai supprimé tes autres modules,
ainsi que ton module de classe inutile).

si besoin, tu peux demander une adaptation.
merci de me donner ton avis.


soan
 

Pièces jointes

  • harmonisation.xlsm
    28 KB · Affichages: 3

joejoe

XLDnaute Nouveau
Bonjour Soan,

C'est parfait également très bien merci !
je vais pouvoir m'en inspirer pour la mise en page de mon fichier et le nettoyage de mon VBA, j'avoue que je ne connais pas plusieurs ligne de ton langage, ça va me permettre de me perfectionner.

Très bonne journée à vous encore merci.
 
Haut Bas