Remplacement d'une valeur

bonjour a tous

je souhaiterais une petite macro pour l'intégrer dans une autre, ma demande est un peu basic

je souhaiterais remplacer la valeur "4155M" par les 6 premiers caractère la colonne a droite et s'il n'y a rien dans la colonne a droite laisser 4155M

ses deux colonnes sont un extrait d'un gros tableaux et sont en réalité dans les colonnes AG et AH

Merci d'avance pour votre réponse

13test.zip (8.12 Ko)
Sub CommandButton1_Click()
Dim i As Integer
Dim DernLigne As Integer

'DernLigne = Range("A1048576").End(xlUp).Row

For i = 2 To 440

If Range("B" & i) <> 0 And IsNumeric(Range("B" & i)) Then
Range("A" & i).Value = Left(Cells(i, 2), 6)
End If
Next

End Sub

merci

je ne suis pas bien exprimée la valeur de "4155M" se trouve au milieu d'autre code donc le truc c'est dès qu'il trouve la valeur de "4155M" la cellule prend la valeur des 6 premier caractère de la cellule a droite s'il la cellule est vide il garde la valeur de "4155M"

la longueur du tableau évolue chaque semaine

merci d'avance

10test2.xlsx (104.52 Ko)

Ah oui c'est mieux avec ton deuxième fichier. Enlève les guillemets et remplace 8000 par DernLigne chez moi ça déconne (d'un coup sans raison) mais ça permet de trouver automatiquement la dernière ligne non vide.

Sub CommandButton1_Click()
Dim i As Integer
'Dim DernLigne As Integer

'DernLigne = Range("A1048576").End(xlUp).Row

For i = 2 To 8000

 If InStr(Range("A" & i), "4155M") <> 0 Then
If Range("B" & i) <> 0 And IsNumeric(Range("B" & i)) Then
Range("A" & i).Value = Left(Cells(i, 2), 6)
End If
End If
Next

End Sub

Bonjour,

ses deux colonnes sont un extrait d'un gros tableaux et sont en réalité dans les colonnes AG et AH

Dans ce cas, il serait mieux d'utiliser un tableau intermédiaire car beaucoup plus rapide.

Attantion, dans ton fichier les cellules de la colonne B qui sont vides ne le sont en fait pas, elles contiennent un espace. Donc, pour le test tu supprime cet espace parasite dans la première cellule, tu tire vers le bas pour les supprimer partout et tu teste le code ci-dessous :

Sub Test()

    Dim Tbl()
    Dim Plage As Range
    Dim I As Long

    'de A2 à B... en fonction des cellules en A
    With ActiveSheet

        Set Plage = .Range(.Cells(2, 1), .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, 2))
        'pour AG:AH...
        'Set Plage = .Range(.Cells(2, 33), .Cells(.Cells(.Rows.Count, 33).End(xlUp).Row, 34))

    End With

    Tbl = Plage

    For I = 1 To UBound(Tbl, 1)

        If Tbl(I, 2) <> "" Then Tbl(I, 1) = Left(Tbl(I, 2), 6)

    Next I

    Plage.Value = Tbl

End Sub

Hervé.

merci les garçons

mais bizarrement j'ai modifiée la macro mais cela mets les résultats de la colonne B de mon tableau alors que je voulais celle des 6 premiers caractère de la colonne a droite donc AH dans la colonne AG

Bououou !

Sub test()

Dim i As Integer

For i = 2 To 8000

If InStr(Range("AG" & i), "4155M") <> 0 Then

If Range("AH" & i) <> 0 And IsNumeric(Range("AH" & i)) Then

Range("AG" & i).Value = Left(Cells(i, 2), 6)

End If

End If

Next

End Sub

Tu as oublié de remplacer le 2 par la valeur de la colonne

Range("AG" & i).Value = Left(Cells(i, 2), 6) devient Range("AG" & i).Value = Left(Cells(i, 34), 6) (je crois)

merci a tous ça marche bien

et a très bientot

Rechercher des sujets similaires à "remplacement valeur"