Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Macro pr renommer des codes sur un planning

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 !

Christian0258

XLDnaute Accro
Bonjour à tout le forum,

Je souhaiterais votre aide pour l'écriture d'une macro afin de renommer, dans un planning, des codes selon un tableau de correspondances définies...

voir fichier.

Merci pour le temps que vous voudrez bien m'accorder.

Bien amicalement,
Christian
 

Pièces jointes

Re : Macro pr renommer des codes sur un planning

Salut Eric
Bonjour le Fil
Bonjour le Forum

il très intéressant de faire comme le fait Eric , des tests (comme le faisait en son temps notre Ami @+Thierry) et qui permettent selon les besoins de choisir
j'avais fait aussi une version ou l'on traite les données que depuis les cellules

Code:
Sub Recoder2()
Dim Rng1 As Range, Rng2 As Range
Dim L As Long
Application.ScreenUpdating = False
With Worksheets("Codes")
   Set Rng1 = .Range(.Cells(3, 1), .Cells(.Cells(.Cells.Rows.Count, 1) _
                                             .End(xlUp).Row, 2))
End With
With Worksheets("Planning").Range("B6").CurrentRegion
   Set Rng2 = Intersect(.Cells, .Offset(1, 1))
End With
For L = 1 To Rng1.Rows.Count
   Rng2.Replace What:=Rng1.Cells(L, 1), Replacement:=Rng1.Cells(L, 2), _
 LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
   ReplaceFormat:=False
Next
Application.ScreenUpdating = True
End Sub
Encore merci ERIC
Bonne journée
 
Re : Macro pr renommer des codes sur un planning

Bonjour Jean Marie (un Bail !!) Bonjour Christian, Robert, Eric, le Fil, le Forum


J'espère que tu vas bien mon cher Chti Ami ;-) pour moi ça roule.


Et oui les méthodes sont toutes différentes et aboutissent toujours (enfin normalement car c'est le but... mais avec plus ou moins de temps d'exécution).

Donc oui comme je l'avais signalé dans mon tout premier post, les Tableaux Séquentiels sont les plus rapides sur des grosses tables, c'est clair. Je ne suis pas surpris des quatres minutes avec une comparaison de chacune des 277760 cellules avec mon exemple de base de départ.

Voici une version toujours en double tableaux séquentiels un peu plus optimisée et plus lisible quant aux variables (chacun ses habitudes de programmation)

J'y ai ajouté une InputBox (Application.InputBox) qui servira à Christian pour définir dynamiquement son Tableau de Planning à traiter avec une sélection à la souris (la liste des codes étant toujours dynamique sur deux colonnes "A et B" quelque soit le nombre de lignes).

Code:
Option Explicit
Option Base 1
 
Sub TheRecoder()
Dim WSSource As Worksheet
Dim RangeSource As Range, RangeCible As Range
Dim TabSource  As Variant, TabCible  As Variant
Dim TabloSource() As String, TabloCible() As String
Dim i As Integer, ii As Integer, iii As Integer
Dim NRow As Integer, NCol As Integer
 
    Set WSSource = ThisWorkbook.Worksheets("Codes")
        With WSSource
            Set RangeSource = Range(.Range("A3"), .Range("B5000").End(xlUp))
        End With
 
    Set RangeCible = Application.InputBox(prompt:="Selectionner la Plage Planning", Type:=8)
 
    TabSource = RangeSource
    TabCible = RangeCible
 
    For i = 1 To UBound(TabSource)
        ReDim Preserve TabloSource(1 To UBound(TabSource), 2)
        TabloSource(i, 1) = TabSource(i, 1)
        TabloSource(i, 2) = TabSource(i, 2)
    Next i
 
    NRow = RangeCible.Rows.Count
    NCol = RangeCible.Columns.Count
 
    For i = 1 To NRow
        For ii = 1 To NCol
            ReDim Preserve TabloCible(1 To NRow, 1 To NCol)
            TabloCible(i, ii) = TabCible(i, ii)
            For iii = 1 To UBound(TabSource)
                If TabloCible(i, ii) = TabSource(iii, 1) Then
                    TabloCible(i, ii) = TabSource(iii, 2)
                    Exit For
                End If
            Next iii
        Next ii
    Next i
    RangeCible = TabloCible
End Sub

Bonne fin de week end à tous et toutes
@+Thierry
 
Dernière édition:
- 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
40
Affichages
2 K
Réponses
66
Affichages
724
Réponses
8
Affichages
634
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…