remplacement de donnees par vba

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

cg1980

XLDnaute Occasionnel
bonjour
Je suis desole mais je reformule une question mal formule prcedemment.

j aimerais par macro (car je ne peux laisser de formule dans les cellules) remplacer la colonne D selon les criteres suivants:

Si col E = "GOVT" ou "PFAND" ou"FIN" alors colD = colE&colG (AT GOVT dans le premier cas par exemple en D 4)
Si col E = "NFI" ou "PS" colD = colG

Merci
 

Pièces jointes

Re : remplacement de donnees par vba

Bonjour, , le Forum,

Peut-être ainsi :

Code:
Option Explicit
Sub Colonne_D_valeurs()
Dim i As Long
Application.ScreenUpdating = False
    For i = 4 To Range("b65536").End(xlUp).Row
        If Range("b" & i).Offset(0, 3).Value = "GOVT" Or Range("b" & i).Offset(0, 3).Value = "PFAND" Or Range("b" & i).Offset(0, 3).Value = "FIN" Then
            Range("b" & i).Offset(, 2).Value = Range("b" & i).Offset(, 3).Value & Range("b" & i).Offset(, 5).Value
        End If
        If Range("b" & i).Offset(0, 3).Value = "NFI" Or Range("b" & i).Offset(0, 3).Value = "PS" Then
            Range("b" & i).Offset(, 2).Value = Range("b" & i).Offset(, 5).Value
        End If
    Next
Application.ScreenUpdating = True
End Sub

A bientôt 🙂
 
Re : remplacement de donnees par vba

Bonjour cg1980, Bonjour 00, 🙂

Peut-être envisager un Select case dans ce cas

Code:
Sub Colonne_D_valeurs()
Dim i As Long
Application.ScreenUpdating = False
    For i = 4 To Range("b65536").End(xlUp).Row
        select case Range("b" & i).Offset(0, 3).Value
        case "GOVT", "PFAND", "FIN"        
            Range("b" & i).Offset(, 2).Value = Range("b" &  i).Offset(, 3).Value & Range("b" & i).Offset(, 5).Value
        case "NFI", "PS"
            Range("b" & i).Offset(, 2).Value = Range("b" & i).Offset(, 5).Value
        End select
    Next
Application.ScreenUpdating = True
End Sub
 
Re : remplacement de donnees par vba

salut

pour le fun, Si… Tototiti2008 😀 te propose de remplacer les If de DoubleZero 😀 par un Select Case, je propose de remplacer les Offset par un Range simplifié à défaut de Cells .

Code:
Sub Colonne_D_valeurs()
  Dim i As Long
  Application.ScreenUpdating = False
  For i = 4 To Range("b65536").End(xlUp).Row
    Select Case Cells(i, "D")
    Case "GOVT", "PFAND", "FIN"
      Cells(i, "D") = Cells(i, "E") & Cells(i, "G")
    Case "NFI", "PS"
      Cells(i, "D") = Cells(i, "G")
    End Select
  Next
  Application.ScreenUpdating = True
End Sub

Code:
Sub Colonne_D_valeurs()
  Dim R As Range
  For Each R In Range("D4", Cells(Rows.Count, 4).End(xlUp))
    Select Case R.Value
      Case "GOVT", "PFAND", "FIN": R = R(1, 2) & R(1, 4)
      Case "NFI", "PS": R = R(1, 4)
    End Select
  Next
End Sub
 
Re : remplacement de donnees par vba

Bonsoir Si...,
Re,

J'aurais dû rester dans mon enclos 🙄 !

Surtout pas, ta solution est parfaitement fonctionnelle
La simplification du code, c'est toujours plus facile quand on arrive et que le code est déjà fait, quand on est concentré à pondre le code on ne prend que rarement le temps de le faire 😉

Edit : Bing, Bon je crois que les protestations simultanées de Si... et de moi parlent d'elles-mêmes
 
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

T
Réponses
7
Affichages
1 K
Theza
T
P
Réponses
1
Affichages
988
pierrot63270
P
L
Réponses
5
Affichages
2 K
lumiexcel
L
A
Réponses
2
Affichages
2 K
A
D
Réponses
6
Affichages
65 K
I
Réponses
8
Affichages
2 K
iStarOSX
I
A
Réponses
5
Affichages
10 K
Retour