XL 2016 REMPLACER CELLULES

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 !

MONTREAL2020

XLDnaute Junior
Salut,

J'aimerais introduire une VBA qui me permet de remplacer mes cellules de la colonne (C exemple) par les cellules de la colonne (I exemple).
la condition c'est de le faire que pour les lignes dont la cellule colonne I est remplie et ce pour toute la colonne.

Je vous ai joint un fichier.

Merci pour votre aide.
 

Pièces jointes

Bonsoir MONTREAL2020, sylvanu,

Avec des tableaux VBA c'est bien plus rapide s'il y a beaucoup de remplacements :
VB:
Sub Remplacer()
Dim tablo, resu(), i&
With [A1].CurrentRegion
    tablo = .Resize(, 9) 'matrice, plus rapide
    ReDim resu(1 To UBound(tablo), 1 To 1)
    resu(1, 1) = tablo(1, 3) 'en-tête
    For i = 2 To UBound(tablo)
        If tablo(i, 9) = "" Then resu(i, 1) = tablo(i, 3) Else resu(i, 1) = tablo(i, 9)
    Next
    .Cells(1, 3).Resize(UBound(resu)) = resu 'restitution
    .Columns(3).AutoFit 'ajustement largeur
End With
End Sub
A+
 

Pièces jointes

Bonsoir MONTREAL2020, sylvanu,

Avec des tableaux VBA c'est bien plus rapide s'il y a beaucoup de remplacements :
VB:
Sub Remplacer()
Dim tablo, resu(), i&
With [A1].CurrentRegion
    tablo = .Resize(, 9) 'matrice, plus rapide
    ReDim resu(1 To UBound(tablo), 1 To 1)
    resu(1, 1) = tablo(1, 3) 'en-tête
    For i = 2 To UBound(tablo)
        If tablo(i, 9) = "" Then resu(i, 1) = tablo(i, 3) Else resu(i, 1) = tablo(i, 9)
    Next
    .Cells(1, 3).Resize(UBound(resu)) = resu 'restitution
    .Columns(3).AutoFit 'ajustement largeur
End With
End Sub
A+


Bonjour job75,
J'ai quelques interrogations:
1- Est-ce qu'il y a moyen de changer la colonne de destination et la colonne source
2- Est ce possible d'effacer la cellules de la colonne source une fois l'action de remplacement est faite
3- Dois-je créer un module pour ma feuille et coller le code.
4- Affecter un bouton de commande


Merci
 
J'ai quelques interrogations:
1- Est-ce qu'il y a moyen de changer la colonne de destination et la colonne source
2- Est ce possible d'effacer la cellules de la colonne source une fois l'action de remplacement est faite
3- Dois-je créer un module pour ma feuille et coller le code.
4- Affecter un bouton de commande
1 - Bien sûr, quelles colonnes voulez-vous utiliser ?

2 - Oui, effacez toute la colonne source (9) à la fin de la macro => .Columns(9).ClearContents

3 -Pas forcément, dans mon fichier la macro est dans le code de la feuille.

4 - C'est ce que j'ai fait dans mon fichier.
 
Si le tableau commence bien en A1, colonne AM => 39, colonne AU => 47.

Comme on modifie des cellules, s'il y a une macro Worksheet_Change dans la feuille ou une macro Workbook_SheetChange dans ThisWorkbook, il faut désactiver les évènements :
VB:
Sub Remplacer()
Dim tablo, resu(), i&
With [A1].CurrentRegion 'à adapter
    tablo = .Resize(, 47) 'matrice, plus rapide
    ReDim resu(1 To UBound(tablo), 1 To 1)
    resu(1, 1) = tablo(1, 39) 'en-tête
    For i = 2 To UBound(tablo)
        If tablo(i, 47) = "" Then resu(i, 1) = tablo(i, 39) Else resu(i, 1) = tablo(i, 47)
    Next
    Application.EnableEvents = False 'désactive les évènements
    .Cells(1, 39).Resize(UBound(resu)) = resu 'restitution
    .Columns(47).ClearContents 'RAZ
    .Columns(39).AutoFit 'ajustement largeur
    Application.EnableEvents = True 'réactive les évènements
End With
End Sub
 
- 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

Réponses
3
Affichages
180
Réponses
2
Affichages
135
Réponses
7
Affichages
176
Réponses
5
Affichages
200
Réponses
4
Affichages
146
Retour