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

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

tototiti2008

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

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…