Comparer cellule avec plage vb

Résolu/Fermé
pgillou Messages postés 49 Date d'inscription lundi 23 août 2010 Statut Membre Dernière intervention 14 octobre 2010 - 17 sept. 2010 à 08:51
pgillou Messages postés 49 Date d'inscription lundi 23 août 2010 Statut Membre Dernière intervention 14 octobre 2010 - 17 sept. 2010 à 15:59
Bonjour le forum,


Encore besoin de votre aide sur une maccro exel.

Je m'explique je cherche à comparer une cellule avec une plage pour ensuite la copier.

Voici la partie du code avec la ligne en gras posant problème:

If .Cells(Lig, Col).Value = Range("D3:D80").Value Then
.Cells(Lig, Col).EntireRow.Copy
NumLig = NumLig + 1
Cells(NumLig + 127, 2).Select
ActiveSheet.Paste Link:=True
End If

Merci de votre aide!
A voir également:

6 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
17 sept. 2010 à 10:45
Bonjour
Dim plage As Range
Dim cel

St plage = Range("D3:D81")
'....
For Each cel In plage
   If cel.Value = .Cells(Lig, Col).Value Then
   'blabla ..
   End If
Next cel

'....


;o)
1
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
17 sept. 2010 à 08:57
Bonjour,
Essaies:

if application.countif(range("D3:D80"),cells(lig,col))>0 then
0
pgillou Messages postés 49 Date d'inscription lundi 23 août 2010 Statut Membre Dernière intervention 14 octobre 2010 1
17 sept. 2010 à 09:22
Merci pour ta réponse écoute rien ne se passe je te donne le code complet:

Sub REGROUPB()

Dim Lig As Long
Dim Col As String
Dim NbrLig As Long
Dim NumLig As Long

Sheets("REGROUP B").Activate 'feuille de destination
NumLig = 0
Col = "B" ' colonne feuille source à parcourir
NumLig = 0
With Sheets("carnet de dep a") ' feuille source
NbrLig = .Cells(65536, Col).End(xlUp).Row
For Lig = 1 To NbrLig
If Application.CountIf(Range("D3:D81"), Cells(Lig, Col)) Then
.Cells(Lig, Col).EntireRow.Copy
NumLig = NumLig + 1
Cells(NumLig + 127, 2).Select
ActiveSheet.Paste Link:=True
End If
Next
End With



End Sub

Merci de ton aide!
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
17 sept. 2010 à 09:40
Dans ta demande, on ne savait pas que ta ligne était dans with -end with
donc
If Application.CountIf(.Range("D3:D81"), .Cells(Lig, Col)) Then 


et d'autre part, j'aurais plutôt mis col=2 que "B" (ce n'est pas obligatoire)

ensuite tu copies une ligne entière
.Cells(Lig, Col).EntireRow.Copy
sur une zone commençant colonne 2...
Cells(NumLig + 127, 2).Select


enfin "numlig" semble inutile, tu pourrais le remplacer par "lig"
0
pgillou Messages postés 49 Date d'inscription lundi 23 août 2010 Statut Membre Dernière intervention 14 octobre 2010 1
17 sept. 2010 à 10:40
Je te remercie ,je teste mais toujours pas de résultat le décalage de colonne est voulu je prend compte de tes remarques.

C'est vraiment cette ligne qui pose problème il faut que je trouve pour l'appliquer à une plage une idée?

If .Cells(Lig, Col).Value = Range("D121").Value Then

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pgillou Messages postés 49 Date d'inscription lundi 23 août 2010 Statut Membre Dernière intervention 14 octobre 2010 1
17 sept. 2010 à 11:44
Salut Polux31

J'ai juste un problème avec St plage marche pas peut tu m'aider?

Merci
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
17 sept. 2010 à 11:52
oups autant pour moi ...

Set plage = ....

et faire Set plage = Nothing juste avant le End Sub

;o)
0
pgillou Messages postés 49 Date d'inscription lundi 23 août 2010 Statut Membre Dernière intervention 14 octobre 2010 1
17 sept. 2010 à 13:32
Désolé d'abuser mais ca ne fonctionne pas n'ya til pas une fontion à ton connaissance permettant de dire:
Si .Cells(Lig, Col).Value est égal à une des valeurs de la plage alors copier ligne.

Merci
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
17 sept. 2010 à 14:38
Désolé, la ligne que j'avais eu l'impertinence de te donner fonctionne; mais tu as eu raison de me jeter de cette discussion, je suis trop nul pour toi
0
pgillou Messages postés 49 Date d'inscription lundi 23 août 2010 Statut Membre Dernière intervention 14 octobre 2010 1
17 sept. 2010 à 14:54
Houla je ne jette personne je t'ai remercié et te remercie encore pour ton aide et si je fais appel au forum c'est que je n'arrive pas à le faire tout seul. J'essaye juste d'explorer plusieurs soltuions pour arriver au bon résultat.

Donc ne le prend pas mal

Bonne après midi
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
17 sept. 2010 à 15:50
Dire que ça ne fonctionne pas ou "toujours pas de résultats" est un peu court ...
Je n'ai pas pris l'option "don divinatoire" dans mon cursus...

Je t'ai donné une façon différente de michel pour parcourir une plage, à toi de l'adapter.

Tout comme la proposition de michel qui curieusement fonctionne quand elle est bien appliquée.
0
pgillou Messages postés 49 Date d'inscription lundi 23 août 2010 Statut Membre Dernière intervention 14 octobre 2010 1
17 sept. 2010 à 15:59
ça devient un linchage collectif je débute en programmation donc je mais pas mal de temps à adapter le code c'est dans le cadre professionnel donc je n'ai pas tout mon temps non plus donc j'essaye de faire au plus vite. J'ai réussi au final avec ton code Polux31 et aucun moment je n'ai remis en doute vos compétences à tous les deux. Maintenant si vous êtes sentis froissez mes plates escuses.

Merci et bon week end à tous les deux :)
0