Comparaison avec ActiveCell.Value
Résolu/Fermé
mcou
-
15 mai 2012 à 14:27
ccm81 Messages postés 10907 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 janvier 2025 - 16 mai 2012 à 18:37
ccm81 Messages postés 10907 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 janvier 2025 - 16 mai 2012 à 18:37
5 réponses
ccm81
Messages postés
10907
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
24 janvier 2025
2 430
16 mai 2012 à 09:53
16 mai 2012 à 09:53
bonjour
si je comprends bien, tu n'as que la ligne de activecell à tester
essaies ceci
bonne suite
si je comprends bien, tu n'as que la ligne de activecell à tester
essaies ceci
Option Explicit Const cofixee = "A" Const covarie = "D" Const coul = 8 Public Sub verif() Dim li As Long Dim ms, vf With ActiveSheet li = ActiveCell.Row .Rows(li).Select vf = .Range(cofixee & li).Value If vf <> .Range(covarie & li).Value Then .Range(cofixee & li).Interior.ColorIndex = coul .Range(covarie & li).Interior.ColorIndex = coul ms = "données ligne " & li & " différentes, voulez vous rectifier ?" If MsgBox(ms, vbYesNo) = vbYes Then ms = InputBox("données ligne " & li & " différentes", , vf) .Range(covarie & li).Value = ms End If End If End With End Sub
bonne suite
linkcr15
Messages postés
362
Date d'inscription
mercredi 7 janvier 2009
Statut
Membre
Dernière intervention
31 mars 2016
12
15 mai 2012 à 14:54
15 mai 2012 à 14:54
Je n'ai pas tout compris mais je vais essayé de t'aider. Tu as deux cellules par ligne et tu veux effectuer un opération tant que les deux cellules sont différentes?
Ce que je n'ai pas compris c'est pourquoi tu utilises les valeurs des cellules de la case sélectionnée?
Ce que je n'ai pas compris c'est pourquoi tu utilises les valeurs des cellules de la case sélectionnée?
Par ligne, j'ai plein de cellules. Mais je souhaite faire une comparaison sur deux d'entre elle.
Ces deux cellules contiennent des montants. Et je souhaite réaliser vérifier par une macro que ces deux montants sont bien identiques.
De ce fait, je chercher à exprimer un do while et faire une comparaison " <>" et si tel est le cas, j'ouvrirais une inputbox pour remodifier le montant de l'activecell
Ces deux cellules contiennent des montants. Et je souhaite réaliser vérifier par une macro que ces deux montants sont bien identiques.
De ce fait, je chercher à exprimer un do while et faire une comparaison " <>" et si tel est le cas, j'ouvrirais une inputbox pour remodifier le montant de l'activecell
linkcr15
Messages postés
362
Date d'inscription
mercredi 7 janvier 2009
Statut
Membre
Dernière intervention
31 mars 2016
12
15 mai 2012 à 16:21
15 mai 2012 à 16:21
Et le but est de refaire cette opération pour chaque ligne utilisée?
Car je ne comprends pas pourquoi faire un Do While sur une ActiveCell, pourquoi ne pas utiliser Cells simplement?
Car je ne comprends pas pourquoi faire un Do While sur une ActiveCell, pourquoi ne pas utiliser Cells simplement?
en fait, je programme une macro complète pour vérifier l'ensemble de ma saisie (saisie sur une ligne).
je fais plusieurs macro et une seule qui combine le tout.
la macro que je cherche à faire est une composante : d'où l'activeCell puisqu'elle vient après une première macro. je ne sais pas si je suis très compréhensible :s
mon fichier est un fichier de suivi de gestion de commande. dans une première partie du tableau, il y a plusieurs colonnes à remplir par commande (une ligne = une commande) sur les différents points suivant par eg : qui commande, fournisseur, codecomptable, quand, montant (ma colonne G) etc...
dans une seconde partie de mon tableau, elle sert de rapprochement entre les commandes reçues et en cours. je retrouve dans cette partie une autre colonne montant (colonne Q).
Ma macro cherche donc à vérifier sur une seule ligne (une vérification par ligne puisque les vérif se font au fur et à mesure qu'une commande est reçue) si le montant de la colonne Q est bien égal au montant de la colonne G. Si tel n'est pas le cas, je redemande à saisir de le montant une nouvelle fois.
Je ne connais pas la fonction Cells. Pouvez-vous m'en dire d'avantage ?
Je ne peux vous joindre mon fichier, étant donné qu'il est interne à l'entreprise.
Merci beaucoup.
je fais plusieurs macro et une seule qui combine le tout.
la macro que je cherche à faire est une composante : d'où l'activeCell puisqu'elle vient après une première macro. je ne sais pas si je suis très compréhensible :s
mon fichier est un fichier de suivi de gestion de commande. dans une première partie du tableau, il y a plusieurs colonnes à remplir par commande (une ligne = une commande) sur les différents points suivant par eg : qui commande, fournisseur, codecomptable, quand, montant (ma colonne G) etc...
dans une seconde partie de mon tableau, elle sert de rapprochement entre les commandes reçues et en cours. je retrouve dans cette partie une autre colonne montant (colonne Q).
Ma macro cherche donc à vérifier sur une seule ligne (une vérification par ligne puisque les vérif se font au fur et à mesure qu'une commande est reçue) si le montant de la colonne Q est bien égal au montant de la colonne G. Si tel n'est pas le cas, je redemande à saisir de le montant une nouvelle fois.
Je ne connais pas la fonction Cells. Pouvez-vous m'en dire d'avantage ?
Je ne peux vous joindre mon fichier, étant donné qu'il est interne à l'entreprise.
Merci beaucoup.
linkcr15
Messages postés
362
Date d'inscription
mercredi 7 janvier 2009
Statut
Membre
Dernière intervention
31 mars 2016
12
15 mai 2012 à 16:47
15 mai 2012 à 16:47
Je n'ai pas ton programme sous les yeux, donc je ne peux faire que des suppositions. Mais dans ton cas, je ne me préoccuperais pas de l'ActiveCell, je vérifierais simplement que, pour chaque ligne, les valeurs correspondent. Ainsi, voici le code auquel je pense :
i=1
Sheets("nom de ta feuille").activate
while cells(i,1).value<>"" 'Tant que ta ligne n'est pas vide
if cells(i, 7).value<>cells(i, 17).value then 'Si la valeur en Gi est différente de la valeur en Qi, avec 7 correspond à la colonne G et 17 à la colonne Q
....
else
....
end if
wend
i=1
Sheets("nom de ta feuille").activate
while cells(i,1).value<>"" 'Tant que ta ligne n'est pas vide
if cells(i, 7).value<>cells(i, 17).value then 'Si la valeur en Gi est différente de la valeur en Qi, avec 7 correspond à la colonne G et 17 à la colonne Q
....
else
....
end if
wend
Bonjour,
Je viens de reprendre votre macro telle que :
Sub adapt2()
i = 1
Sheets("Feuil3").Activate
While Cells(i, 1).Value <> "" 'Tant que ta ligne n'est pas vide
If Cells(i, 7).Value <> Cells(i, 17).Value Then 'Si la valeur en Gi est différente de la valeur en Qi, avec 7 correspond à la colonne G et 17 à la colonne Q
MsgBox "les montants sont différents, vbcritical"
Cells(i, 17) = InputBox("veuillez saisir de nouveau le montant de la commande colonne Q")
End If
Wend
End Sub
Cependant, elle ne peut s'executer. Un message d'erreur m'apparait me disant que la variable i n'est pas définie. :/
Merci de votre aide
Je viens de reprendre votre macro telle que :
Sub adapt2()
i = 1
Sheets("Feuil3").Activate
While Cells(i, 1).Value <> "" 'Tant que ta ligne n'est pas vide
If Cells(i, 7).Value <> Cells(i, 17).Value Then 'Si la valeur en Gi est différente de la valeur en Qi, avec 7 correspond à la colonne G et 17 à la colonne Q
MsgBox "les montants sont différents, vbcritical"
Cells(i, 17) = InputBox("veuillez saisir de nouveau le montant de la commande colonne Q")
End If
Wend
End Sub
Cependant, elle ne peut s'executer. Un message d'erreur m'apparait me disant que la variable i n'est pas définie. :/
Merci de votre aide
ccm81
Messages postés
10907
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
24 janvier 2025
2 430
15 mai 2012 à 16:08
15 mai 2012 à 16:08
bonjour
une proposition à adapter, si du moins, j'ai compris ton problème
https://www.cjoint.com/?0EpqhFWE4Gq
bonne suite
une proposition à adapter, si du moins, j'ai compris ton problème
https://www.cjoint.com/?0EpqhFWE4Gq
bonne suite
La solution a été trouvée !!
Sub amount()
ActiveCell.Offset(0, 1).Select
Dim I As Long
I = ActiveCell.Row
Do While ActiveCell.Value <> Cells(I, 7).Value 'Si la valeur en Gi est différente de la valeur en Qi, avec 7 correspond à la colonne G et 17 à la colonne Q
MsgBox "Le montant Cegid (colonne Q) est différent du montant saisi initialement (colonne G).", vbCritical
ActiveCell = InputBox("Veuillez saisir de nouveau le montant Cegid (colonne Q)")
Loop
End Sub
Sub amount()
ActiveCell.Offset(0, 1).Select
Dim I As Long
I = ActiveCell.Row
Do While ActiveCell.Value <> Cells(I, 7).Value 'Si la valeur en Gi est différente de la valeur en Qi, avec 7 correspond à la colonne G et 17 à la colonne Q
MsgBox "Le montant Cegid (colonne Q) est différent du montant saisi initialement (colonne G).", vbCritical
ActiveCell = InputBox("Veuillez saisir de nouveau le montant Cegid (colonne Q)")
Loop
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
linkcr15
Messages postés
362
Date d'inscription
mercredi 7 janvier 2009
Statut
Membre
Dernière intervention
31 mars 2016
12
16 mai 2012 à 13:57
16 mai 2012 à 13:57
C'est le Do While que je ne comprends pas, pourquoi est-ce qu'un simple
ne suffit pas?
If ActiveCell.Value <> Cells(i, 7) then ... End If
ne suffit pas?
linkcr15
Messages postés
362
Date d'inscription
mercredi 7 janvier 2009
Statut
Membre
Dernière intervention
31 mars 2016
12
16 mai 2012 à 14:46
16 mai 2012 à 14:46
Et un While dans le If? Tu répètes l'opération tant que la saisie n'est pas bonne.
16 mai 2012 à 10:03
Au passage, voici ma solution :
Sub amount()
ActiveCell.Offset(0, 1).Select
Dim I As Long
I = ActiveCell.Row
Do While ActiveCell.Value <> Cells(I, 7).Value 'Si la valeur en Gi est différente de la valeur en Qi, avec 7 correspond à la colonne G et 17 à la colonne Q
MsgBox "Le montant Cegid (colonne Q) est différent du montant saisi initialement (colonne G).", vbCritical
ActiveCell = InputBox("Veuillez saisir de nouveau le montant Cegid (colonne Q)")
Loop
End Sub