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

  • Initiateur de la discussion Initiateur de la discussion joejoe
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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:
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
 
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
 
@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

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.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Cpier/coller en VBA
Réponses
7
Affichages
630
Retour