Remplacer le contenu d'une cellule par vide

J'ai fait une boucle qui dit de remplacer le contenu de la colone 18 selon une matrice d'équivalence établie dans la colone 5 et 6 de la feuille DATA. Jusqu'à maintenant ça marche. Cependant je veut dire à la colonne 18 que si le contenu ne correspond à rien dans la matrice d'équivalence (colone 6) de se mettre vide.

Boucle fonctionnelle:

For i = 1 To 65000

If ActiveSheet.Cells(1 + i, 18) = "" Then Exit For

For j = 1 To 500

If ActiveSheet.Cells(i + 1, 18) = Sheets("DATA").Cells(j, 6) Then

ActiveSheet.Cells(i + 1, 18).Value = Sheets("DATA").Cells(j, 5).Value

Exit For

End If

Next j

Next i

Où ça bloque:

For i = 2 To 65000

If ActiveSheet.Cells( i, 18) = "" Then Exit For

For j = 2 To 500

If ActiveSheet.Cells(i, 18) = Sheets("DATA").Cells(j, 6) Then

ActiveSheet.Cells(i, 18).Value = Sheets("DATA").Cells(j, 5).Value

Exit For

Else: ActiveSheet.Cells(i, 18).Value = ""

End If

Next j

Next i

Pouvez-vous m'aider?

Bonjour mimimo,

Pas facile d'être catégorique avec un extrait de code apparemment incomplet, mais ce que je peux te dire :

Il me semble qu'il faille supprimer la deuxième ligne (celle que j'ai mise en commentaire), car si tu effaces la cellule Cells(i,18), cela met fin à la première boucle (i).

For i = 2 To 65000
'If ActiveSheet.Cells( i, 18) = "" Then Exit For
For j = 2 To 500
If ActiveSheet.Cells(i, 18) = Sheets("DATA").Cells(j, 6) Then
ActiveSheet.Cells(i, 18).Value = Sheets("DATA").Cells(j, 5).Value
Exit For
Else: ActiveSheet.Cells(i, 18).Value = ""
End If
Next j
Next i

Cordialement.

Désolée, de ne pas avoir fournit le code au complet. Votre suggestion ne fonctionen pas.

J'ai fait un petit exemple ici en fichier joint.

Au lieu d'être la colone 18 c'est la colone 7. Je veut que l'abréviation du pays de la colonne 7 soit remplacé par le nom complet en fonction de la matrice d'équivalence de la feuille DATA. Lorsque la valeur de la colonne 7 ne correspond à rien, je veux qu'elle se mette à vide.

Private Sub CommandButton1_Click()

Application.ScreenUpdating = False

For i = 1 To 65000

For j = 1 To 500

If ActiveSheet.Cells(i + 1, 7) = Sheets("DATA").Cells(j, 6) Then

ActiveSheet.Cells(i + 1, 7).Value = Sheets("DATA").Cells(j, 5).Value

Exit For

Else: ActiveSheet.Cells(i + 1, 7).Value = ""

End If

Next j

Next i

Application.ScreenUpdating = True

End Sub

32classeur1.zip (15.46 Ko)

Bonjour,

Tu peux essayer avec ce code

Private Sub CommandButton1_Click()
Dim Cel As Range, C As Range
    Application.ScreenUpdating = False
    With Worksheets("DATA").Columns(6)
        For Each Cel In Range("G2:G" & Range("G" & Rows.Count).End(xlUp).Row)
            Set C = .Find(Cel, LookIn:=xlValues, lookat:=xlWhole)
            If Not C Is Nothing Then
                Cel = C.Offset(0, -1).Value
            Else
                Cel = ""
            End If
        Next Cel
    End With
    Application.ScreenUpdating = True
End Sub

A+

Bonjour Frangy!

Ça marche super bien, merci énormément

Bonsoir mimimo, frangy,

mimimo, après une absence momentanée du site, j'ai repris le travail entamé sur ton code.

Je te propose donc le fruit de mes réflexions.

NB : sauf erreur de ma part, sur le fichier code transmis par frangy, il y a un bug. En effet,la distinction ne se fait pas entre "Sl" (Slovenia) et "SL (Sierra Leone). C'est en tout cas ce que j'ai constaté lors de ma première ébauche et c'est la raison pour laquelle j'ai dû abandonner provisoirement. J'ai donc repris la méthodologie et j'utilise dès lors deux boucles de comparaison, après avoir stocké les abréviations dans un tableau pour augmenter la rapidité d'exécution.

Je te laisse le soin de vérifier, sachant que j'ai ajouté Sl et SL pour étayer mes dires.

Cordialement.

Bonsoir mimimo, Papou-net,

sauf erreur de ma part, sur le fichier code transmis par frangy, il y a un bug. En effet,la distinction ne se fait pas entre "Sl" (Slovenia) et "SL (Sierra Leone).

Ce sont les yeux qui buguent

L’abréviation de Slovenia n’est pas "Sl", avec le "l" de "lima" mais "SI", avec le "I" de "india".

A+

frangy a écrit :

Bonsoir mimimo, Papou-net,

sauf erreur de ma part, sur le fichier code transmis par frangy, il y a un bug. En effet,la distinction ne se fait pas entre "Sl" (Slovenia) et "SL (Sierra Leone).

Ce sont les yeux qui buguent

L’abréviation de Slovenia n’est pas "Sl", avec le "l" de "lima" mais "SI", avec le "I" de "india".

A+

RE : frangy,

Arf, au temps pour moi, j'ai "bossé" pour rien.

Enfin, presque pour rien, car ça m'a permis de tester une fonction que je n'avais encore jamais utilisée et qui garantit une comparaison sans équivoque. Ca pourra toujours (me) servir dans d'autres cas.

Cordialement.

PS : pourtant chez moi, ça me ressortait systématiquement SIERRA LEONE (SL) au lieu de SLOVENIA (SI)

Rechercher des sujets similaires à "remplacer contenu vide"