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

Remplacer valeur case avec un Select Case

  • Initiateur de la discussion Initiateur de la discussion mroma
  • 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 !

M

mroma

Guest
Bjjr à tous,

En cette fin de journée, je suis coincé sur mon programme VBA.. et débutant 😉

Je souhaite inscire les valeurs de toutes les cellules de ma colonne M par une correspondance selon un select case avec la colonne G, je m'explique

(Exemples)
Si "312-Process" dans la colonne G, inscrire"PROCESS DESIGN" dans la colonne M
Si "346-Electrical Design" dans la colonne G, ,inscrire "ELECTRICAL DESIGN" dans la colonne M
....

J'ai commencé le code mais je tourne en rond.... Help help 😉

Code:
  For Each Cell In Worksheets("Document").Range("G2:G" & Worksheets("Document").Range("C65536").End(xlUp).Row)
    Select Case Cell
    Case Is = "312-Process"
        ActiveCell.FormulaR1C1 = "PROCESS DESIGN"
       
    Case Is = "346-Electrical Design"
        ActiveCell.FormulaR1C1 = "ELECTRICAL DESIGN")
   
    End Select
  Next Cell

Merci de votre aide !!
 
Re : Remplacer valeur case avec un Select Case

Salut

Voici le code qui devrait fonctionner 😉
Code:
Sub Test()
  Dim Cel As Range
  For Each Cel In Worksheets("Document").Range("G2:G" & Worksheets("Document").Range("C65536").End(xlUp).Row)
    Select Case Cel
    Case Is = "312-Process"
      Range("M" & Cel.Row).Value = "PROCESS DESIGN"


    Case Is = "346-Electrical Design"
      Range("M" & Cel.Row).Value = "ELECTRICAL DESIGN"


    End Select
  Next Cel
End Sub

A+
 
Re : Remplacer valeur case avec un Select Case

Bonsoir.

Si jamais ça ne fonctionnait pas, préférez préciser Select Case Cel.Value
J'ai en effet peur que sans cela il n'attende des objets derrière les Case Is …
 
Re : Remplacer valeur case avec un Select Case

Je test de suite !! 🙂

J'avais pensé a ça sinon : (je viens de trouver)

Dim Cell As Range

For Each Cell In Worksheets("Document").Range("G2:G" & Worksheets("Document").Range("C65536").End(xlUp).Row)
Select Case Cell


Case Is = "357-Civil"
Cell.Offset(0, 6) = "CIVIL WORKS" '357

Case Is = "346-Electrical Design"
Cell.Offset(0, 6) = "ELECTRICAL DESIGN" '346

End Select
Next Cell

Merci !
 
Re : Remplacer valeur case avec un Select Case

Bonjour,
mroma

Je pense qu'avec cette méthode, tu vas droit au mur pour la simple raison que tes listes de valeurs vont évoluer et que tu seras toujours obligé de modifier ton code VBA pour les nouvelles correspondances.

A mon avis, il vaut mieux créer 2 tableaux Source et Valeur qui seront complétés au fil du temps et écrire les correspondances à partir du texte source.
Exemple : 346-Electrical Design ==> Electrical Design ==> recherche ==> écriture de ELECTRICAL DESIGN

Ci-joint un exemple à adapter (avec tableaux T_source et T_valeur de 500 lignes)

Cordialement
Robert
 

Pièces jointes

Re : Remplacer valeur case avec un Select Case

Bonsoir
C'est une autre manière de codage parmi d'autres possibilités.

DoubleZero
Après pas mal d'années de développement en Excel et VBA, je préfère créer systématiquement un maximum de noms de manière à bien gérer les tableaux, les listes et variables sans risque en cas de modifications des années après.

Cette méthode est bien plus pérenne et fonctionnera toujours même si des futures évolutions obligent à déplacer des cellules, d'insérer des lignes ou des colonnes,...

Par exemple Sheets("Code").Columns(1).Find(... ne marchera plus si l'on insère des colonnes à gauche

A+
Robert
 
Re : Remplacer valeur case avec un Select Case

Bonjour à tous,

Bonne idée que les tableaux de correspondance nommés.

Et pourquoi pas cette macro :

Code:
Private Sub CommandButton1_Click()
With Intersect(Me.UsedRange.EntireRow, Range("M2:M" & Rows.Count))
  .FormulaR1C1 = "=IF(COUNTIF(T_source,RC7),INDEX(T_valeur,MATCH(RC7,T_source,0)),""""&RC7)"
  .Value = .Value 'ne garde que les valeurs
End With
End Sub
Fichier joint.

Edit : j'ai mis la même colonne G que celle du fichier (2) qui suit.

Ceci pour pouvoir comparer les durées d'exécution des 2 macros.

A+
 

Pièces jointes

Dernière édition:
Re : Remplacer valeur case avec un Select Case

Re,

Un autre type de correspondance qui nécessite une autre méthode :

Code:
Private Sub CommandButton1_Click()
Dim c As Range
Application.ScreenUpdating = False
With Intersect(Me.UsedRange.EntireRow, Range("M2:M" & Rows.Count))
  .Value = .Offset(, -6).Value
  For Each c In [T_source].SpecialCells(xlCellTypeConstants)
    .Cells.Replace "*" & c, c(, 2)
  Next
End With
End Sub
Fichier (2).

Edit : noter qu'on peut utiliser cette macro sur le fichier (1).

A+
 

Pièces jointes

Dernière édition:
Re : Remplacer valeur case avec un Select Case

Re,

Voici les durées d'exécution des 2 macros :

- fichier (1) => 0,65 millisecondes

- fichier (2) => 0,94 millisecondes.

Je pensais à tord que la 2ème était plus rapide.

Nota : pour la 1ère j'ai ajouté Application.ScreenUpdating = False.

A+
 
Re : Remplacer valeur case avec un Select Case

Bonjour,
mroma va maintenant avoir l'embarras du choix pour solutionner les remplacements.
Je regarde rarement le temps d'exécution des procédures sauf si l'éxécution me parait interminable (quelques secondes😕) sinon que demander de plus, lorsque le résultat s'affiche à la fin du clic en moins d'un quart de seconde ! 🙂

Super idée que .Value = .Value 'ne garde que les valeurs
Je ne connaissais pas et en général je faisais un copier/coller les valeurs.
C'est réconfortant de pouvoir toujours apprendre.

Robert
 
Re : Remplacer valeur case avec un Select Case

Bonjour, le Fil, Job75 😀, le Forum,

... je préfère créer systématiquement un maximum de noms de manière à bien gérer les tableaux, les listes et variables sans risque en cas de modifications des années après...

Merci, Herdet 🙂, pour le conseil que je vais tâcher 🙄 de retenir...

A bientôt 🙂🙂
 
Re : Remplacer valeur case avec un Select Case

Bonjour, le Fil, Job75 😀, le Forum,
Merci, Herdet 🙂, pour le conseil que je vais tâcher 🙄 de retenir...
A bientôt 🙂🙂

D'autant plus utile que les noms peuvent être créés, modifiés, supprimés directement par VBA (ActiveWorkbook.Names)
... et pour un petit nettoyage du classeur actif :

Code:
Sub Fct_Purge_Noms_Inutiles()
    ' Suppression des noms inutilisés de la feuille active
    Dim nm As Variant
    ' Suppression des noms du classeur contenant #REF
    ThisWorkbook.Activate
    For Each nm In ActiveWorkbook.Names
        If InStr(1, nm.RefersToR1C1, "#REF") <> 0 Then
            ActiveWorkbook.Names(nm.Name).Delete
        End If
    Next
End Sub
 
Dernière édition:
Re : Remplacer valeur case avec un Select Case

Re-bonjour,

Une autre suggestion avec ce code :

VB:
Option Explicit
Sub Quoi()
    Dim c As Range, Quoi As Range
    With Application: .ScreenUpdating = False: .Calculation = xlManual: .EnableEvents = False: End With
    Sheets("Code").Activate
    Cells.Find(What:="COLONNE G", After:=ActiveCell, LookIn:=xlValues, _
               LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
               MatchCase:=True, SearchFormat:=False).EntireColumn.Name = "où"
    Sheets("Document").Activate
    For Each c In Columns(7).SpecialCells(xlCellTypeConstants)
        If c <> "" Then Set Quoi = Sheets("Code").Range("où").Find(c.Value, LookIn:=xlValues)
        If Not Quoi Is Nothing Then c.Offset(0, 6) = Quoi.Offset(0, 1)
    Next
    With Application: .EnableEvents = True: .Calculation = xlAutomatic: .ScreenUpdating = True: End With
End Sub

A bientôt 🙂
 

Pièces jointes

Re : Remplacer valeur case avec un Select Case

Bjr !!!!

Merci à tous pour les multiples réponses 😀
Ce forum est super pour moi qui débute en VBA

J'ai testé vos propositions de solutions, c'est exactement ce que je cherche à faire sauf que,

La macro sur laquelle je travail est assez sophistiquée. Lors de son exécution, l’ensemble des feuilles sont supprimées. ça m’embête un peu de devoir créer une nouvelle feuille pour les paramètres et correspondance (sauf s'il est possible de la cacher ?)

Merci à tous pour votre aide !
😉
 
Dernière modification par un modérateur:
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

G
  • Question Question
Réponses
1
Affichages
771
Grouchet
G
M
  • Question Question
Réponses
3
Affichages
812
Réponses
13
Affichages
2 K
Réponses
1
Affichages
1 K
B
Réponses
4
Affichages
2 K
benoitoleron
B
P
Réponses
6
Affichages
755
P
N
Réponses
2
Affichages
655
N
W
Réponses
6
Affichages
2 K
wkrystof
W
L
Réponses
5
Affichages
2 K
lumiexcel
L
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…