Comparer cellules de deux colonnes vba

mgrizzly

XLDnaute Junior
Bonjour,

Je souhaite comparer les cellules de deux colonnes en VBA sous excel.

J'ai la colonne B où les noms sont déja insrits et la colonne K où je voudrais qur l'utilisateur rentre des noms et valide ces noms en cliquant sur un bouton. Si un nom est le même alors je voudrais vcerrouiller la ligne de la cellule de la colonne B. Ce que j'ai fait ne marche pas.

Voila mon code :

Sub Comparaison()

Dim VALEURA As String, VALEURB As String

For i = 9 To 59
VALEURA = Range("B" & i).Value
For j = 9 To 59
VALEURB = Range("K" & j).Value
If VALEURA = VALEURB Then
Worksheets("Compétences").Activate
Worksheets("Compétences").VALEURA.Select
Rows(ActiveCell.Row).Select
Selection.Locked = True
End If
Next j
Next i

End Sub

Merci de m'aider, il n'y a pas d'erreur dans le code mais rien ne se passe quand je clique sur le bouton.
 

nolich

XLDnaute Occasionnel
Re : Comparer cellules de deux colonnes vba

Bonjour mgrizzly, bonjour à toutes et à tous :)

mgrizzly à dit:
Je souhaite comparer les cellules de deux colonnes en VBA sous excel.

J'ai la colonne B où les noms sont déja insrits et la colonne K où je voudrais qur l'utilisateur rentre des noms et valide ces noms en cliquant sur un bouton. Si un nom est le même alors je voudrais vcerrouiller la ligne de la cellule de la colonne B. Ce que j'ai fait ne marche pas.

Voila mon code :

Sub Comparaison()

Dim VALEURA As String, VALEURB As String

For i = 9 To 59
VALEURA = Range("B" & i).Value
For j = 9 To 59
VALEURB = Range("K" & j).Value
If VALEURA = VALEURB Then
Worksheets("Compétences").Activate
Worksheets("Compétences").VALEURA.Select
Rows(ActiveCell.Row).Select
Selection.Locked = True
End If
Next j
Next i

End Sub

Merci de m'aider, il n'y a pas d'erreur dans le code mais rien ne se passe quand je clique sur le bouton.

Il est normal que rien ne se passe car VALEURA contient une $tring.

Sans filet, sans fichier, essaie ce bout de code et tiens-nous au courant :

Code:
Option Explicit

Sub Comparaison()
'
Dim VALEURA As String, ShComp As Worksheet
Dim i As Long
'
Set ShComp = Sheets("Compétences")

For i = 9 To 59

VALEURA = Range("B" & i).Value

With Application.WorksheetFunction

  If .CountIf(Range(Cells(9, "B"), Cells(59, "B")), VALEURA) > 0 Then
    ShComp.Range("A" & i).EntireRow.Locked = True
  End If
  
End With

Next i

ShComp.Protect

End Sub

@+
 

mgrizzly

XLDnaute Junior
Re : Comparer cellules de deux colonnes vba

Merci kjin,
C'est tout à fait ce que je recherche sauf qu'à la place du msg je voudrais verrouiller la ligne où la cellule de la colonne B est la même que pour la cellule de la colonne K.
C'est pour un planning de congés du personnel (quand une personne est en congé la mettre dans la colonne K et ainsi elle se retrouve bloqhé dans la colonne B et sur la ligne, ainsi elles ne fera plus partie du roulement des agents).
 

kjin

XLDnaute Barbatruc
Re : Comparer cellules de deux colonnes vba

Re,
Pas vraiment sûr de comprendre ce que tu souhaites faire
Pour verrouiller il faut forcément protéger ta feuille
A+
kjin
 

Pièces jointes

  • mgrizzli_V2.xls
    22.5 KB · Affichages: 105

kjin

XLDnaute Barbatruc
Re : Comparer cellules de deux colonnes vba

Re,
Macro2 ne sert à rien tu peux supprimer (reliquat de test)
Code:
'Si la colonne cible n'est pas la colonne 11 (donc K) on quitte la procédure
If Target.Column <> 11.... Then Exit Sub
A+
kjin
 

mgrizzly

XLDnaute Junior
Re : Comparer cellules de deux colonnes vba

Sinon kjin,
Voilà mon fichier, tu peux regarder pourquoi ton code que j'ai mis dedans ne marche pas?
Merci beaucoup.
 

Pièces jointes

  • congés.xls
    27.5 KB · Affichages: 128
  • congés.xls
    27.5 KB · Affichages: 143
  • congés.xls
    27.5 KB · Affichages: 139

nolich

XLDnaute Occasionnel
Re : Comparer cellules de deux colonnes vba

Re mgrizzly et kjin, bonjour à toutes et à tous :)

mgrizzly à dit:
Sinon kjin,
Voilà mon fichier, tu peux regarder pourquoi ton code que j'ai mis dedans ne marche pas?
Merci beaucoup.

Le code que tu a mis dedans est celui de kjin, et il fonctionne ainsi :

Si dans la colonne K on inscrit une valeur que l'on peut trouver également en colonne B, alors la ligne correspondante de la colonne B est verrouillée ; pas celle de la colonne K mais tes premières explications :

mgrizzly à dit:
If VALEURA = VALEURB Then
Worksheets("Compétences").Activate
Worksheets("Compétences").VALEURA.Select
Rows(ActiveCell.Row).Select
Selection.Locked = True

laissaient entendre que c'est bien la colonne de "VALEURA", i.e. la colonne B que tu souhaitais verrouiller.

Si ce n'est pas ça, explique plus précisément ta demande, quelle ligne veux-tu bloquer exactement ?

@+
 

Discussions similaires

Statistiques des forums

Discussions
312 230
Messages
2 086 427
Membres
103 206
dernier inscrit
diambote