remplacement de donnees par vba

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

  • Book1.xls
    40 KB · Affichages: 38
  • Book1.xls
    40 KB · Affichages: 40
  • Book1.xls
    40 KB · Affichages: 52

DoubleZero

XLDnaute Barbatruc
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 :)
 

tototiti2008

XLDnaute Barbatruc
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
 

Si...

XLDnaute Barbatruc
Re : remplacement de donnees par vba

salut

pour le fun, Si… Tototiti2008 :D te propose de remplacer les If de DoubleZero :D 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
 

tototiti2008

XLDnaute Barbatruc
Re : remplacement de donnees par vba

Bonsoir Si...,
Re,

J'aurais dû rester dans mon enclos :rolleyes: !

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:

Discussions similaires

Statistiques des forums

Discussions
312 149
Messages
2 085 772
Membres
102 970
dernier inscrit
JMaurice