Completer une macro existante
Résolu
Edaine
Messages postés
63
Statut
Membre
-
Edaine Messages postés 63 Statut Membre -
Edaine Messages postés 63 Statut Membre -
Bonjour,
J'ai fait une macro de comparaison et de recherche qui est la suivante :
J'aimerai Que au moment de l'affichage de la msg box,
La valeur Cel soit reporté sur la plageDou en colonne A à la suite des cellules déjà remplies et que sur la même ligne, soit reporté 1 en colonne W
JE ne sais pas trop comment m'y prendre, boucle pas boucle, If pas IF :s
Merci d'avance
J'ai fait une macro de comparaison et de recherche qui est la suivante :
Sub Chercher()
Dim FeExtrac As Worksheet
Dim FeDou As Worksheet
Dim PlageExtrac As Range
Dim PlageDou As Range
Dim Cel As Range
Dim FeuilleType As Worksheet
Set FeuilleType = Worksheets("Feuille Type")
Set FeExtrac = Worksheets("Extraction cia flu")
Set FeDou = Worksheets("Douchette")
'plage de valeurs cherchées en feuille "Extrac"
With FeExtrac
Set PlageExtrac = .Range(.[A1], .[A65536].End(xlUp))
End With
'plage de recherche en feuille "Douchette"
With FeDou
Set PlageDou = .Range(.[A1], .[A65536].End(xlUp))
End With
'recherche et affiche un message si valeur absente
For Each Cel In PlageExtrac
If Application.CountIf(PlageDou, Cel) = 0 Then
MsgBox "Le produit " & Cel & " est manquant !"
End If
Next Cel
Call Module1.Somme
End Sub
J'aimerai Que au moment de l'affichage de la msg box,
La valeur Cel soit reporté sur la plageDou en colonne A à la suite des cellules déjà remplies et que sur la même ligne, soit reporté 1 en colonne W
JE ne sais pas trop comment m'y prendre, boucle pas boucle, If pas IF :s
Merci d'avance
A voir également:
- Completer une macro existante
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Macro maker - Télécharger - Divers Utilitaires
- Macro word - Guide
11 réponses
Je suis désolé j'ai pas le courage de décrypter.
Peux tu m'expliquer rapidement le fonctionnement de ta macro finale que tu cherches à faire?
Peux tu m'expliquer rapidement le fonctionnement de ta macro finale que tu cherches à faire?
No souci ! ^^
C'est compréhensible :p
En faite, là ma macro fait la comparaison entre 2 plages de valeur et à chaque valeur manquante dans la plage dou (sachant de plageEx est référence) elle affiche une message box pour me le signaler, j'aimerai qu'à ce moment elle me reporte les valeurs à la suite de plageDou pour les comptabiliser en remplissant la colonne W de la plageDou avec un 1.
Je ne sais pas si c'est plus clair x_O
C'est compréhensible :p
En faite, là ma macro fait la comparaison entre 2 plages de valeur et à chaque valeur manquante dans la plage dou (sachant de plageEx est référence) elle affiche une message box pour me le signaler, j'aimerai qu'à ce moment elle me reporte les valeurs à la suite de plageDou pour les comptabiliser en remplissant la colonne W de la plageDou avec un 1.
Je ne sais pas si c'est plus clair x_O
Je crois avoir compris.
Tu fais
Val1 =1
Val2 =1
Val3 =0
Tant que (cell non vide) ou bien tant que (cell <> " ")
{
Si (Cell(1,Val1) <> Cell(2,Val2)
{
Montrer Box
Cell(3,Val3)=1
Val3 = Val3+1
}
Val1=Val1+1
Val2=Val2+1
}
En gros Je t'ai pas mis la traduction code, je t'explique vite fait:
*(Cell(1,Val1) <= 1 = colonne A; Val1 correspond au numéro de ligne (ici pour la colonne A)
*(Cell(2,Val2) <= 2 = colonne B; Val2 correspond au numéro de ligne (ici pour la colonne B)
*(Cell(3,Val3) <= 3 = colonne C; Val3 correspond au numéro de ligne (ici pour la colonne C)
*Tant que la cellule en A et la cellule en B ne sont pas vides, le test continue
*Si pendant le test, la cellule A diffère de la B, Box s'affiche et en colonne C (plageDou) On met 1.
C'est ça?
Tu fais
Val1 =1
Val2 =1
Val3 =0
Tant que (cell non vide) ou bien tant que (cell <> " ")
{
Si (Cell(1,Val1) <> Cell(2,Val2)
{
Montrer Box
Cell(3,Val3)=1
Val3 = Val3+1
}
Val1=Val1+1
Val2=Val2+1
}
En gros Je t'ai pas mis la traduction code, je t'explique vite fait:
*(Cell(1,Val1) <= 1 = colonne A; Val1 correspond au numéro de ligne (ici pour la colonne A)
*(Cell(2,Val2) <= 2 = colonne B; Val2 correspond au numéro de ligne (ici pour la colonne B)
*(Cell(3,Val3) <= 3 = colonne C; Val3 correspond au numéro de ligne (ici pour la colonne C)
*Tant que la cellule en A et la cellule en B ne sont pas vides, le test continue
*Si pendant le test, la cellule A diffère de la B, Box s'affiche et en colonne C (plageDou) On met 1.
C'est ça?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ca doit être pour ça xDDDD
J'ai du mal aujourd'hui ...
J'arrive même pas à comprendre du français :s
J'ai du mal aujourd'hui ...
J'arrive même pas à comprendre du français :s
En faite non c'pas ça :x
Je cherche si la cellule de la plage Extrac et présente dans la plage Dou,
Si il trouve il continue
Si il ne trouve pas :
Msgbox
Puis copie de la cellule en défaut dans la plage Dou puis inscription du 1 dans la colonne W de cette même ligne
Je cherche si la cellule de la plage Extrac et présente dans la plage Dou,
Si il trouve il continue
Si il ne trouve pas :
Msgbox
Puis copie de la cellule en défaut dans la plage Dou puis inscription du 1 dans la colonne W de cette même ligne
Bonjour,
'Fectivement Doudou n'est pas parti sur la bonne piste.
Regarde ceci et dis moi (les modifs en gras) :
'Fectivement Doudou n'est pas parti sur la bonne piste.
Regarde ceci et dis moi (les modifs en gras) :
Sub Chercher()
Dim FeExtrac As Worksheet
Dim FeDou As Worksheet
Dim PlageExtrac As Range
Dim PlageDou As Range
Dim Cel As Range
Dim FeuilleType As Worksheet
Dim Lign As Long
Set FeuilleType = Worksheets("Feuille Type")
Set FeExtrac = Worksheets("Extraction cia flu")
Set FeDou = Worksheets("Douchette")
'plage de valeurs cherchées en feuille "Extrac"
With FeExtrac
Set PlageExtrac = .Range(.[A1], .[A65536].End(xlUp))
End With
'plage de recherche en feuille "Douchette"
With FeDou
Set PlageDou = .Range(.[A1], .[A65536].End(xlUp))
End With
'recherche et affiche un message si valeur absente
For Each Cel In PlageExtrac
If Application.CountIf(PlageDou, Cel) = 0 Then
MsgBox "Le produit " & Cel & " est manquant !"
With FeDou
Lign = .Cells(65536, 1).End(xlUp).Row + 1
.Cells(Lign, 1).Value = Cel.Value
.Cells(Lign, 23).Value = 1
End With
End If
Next Cel
Call Module1.Somme
End Sub
Ahhh un peu plus compliqué
Attends si ca existe pas dans Dou ça écrit en bas à la suite?
~~~~~~~~~~~~ Nous apportons une aide gratuite merci de : Faire un effort d'écriture,
~~~~~~~~~~ Nous respecter nous et notre aide apportée, Chercher avant de poster
Attends si ca existe pas dans Dou ça écrit en bas à la suite?
~~~~~~~~~~~~ Nous apportons une aide gratuite merci de : Faire un effort d'écriture,
~~~~~~~~~~ Nous respecter nous et notre aide apportée, Chercher avant de poster
c'est ce que je cherche à faire :O
Je voudrai que la valeur de la cellule qui n'existe pas dans Dou s'inscrive justement dans Dou :O à la suite des cellules non vides ^^
Je voudrai que la valeur de la cellule qui n'existe pas dans Dou s'inscrive justement dans Dou :O à la suite des cellules non vides ^^
Pikachu, j'ai tenté !
Ca m'inscrit bien la valeur mais après ça me met une erreur !
Ah merdeeeeeeeeee
xD
En faite j'ai une macro qui se déclenche par ajout d'une valeur dans cette plage de donné, du coup il faut que je emtte
machin even false pour éviter que ça soit pris en compte,
faut que j'essaie xD
Ca m'inscrit bien la valeur mais après ça me met une erreur !
Ah merdeeeeeeeeee
xD
En faite j'ai une macro qui se déclenche par ajout d'une valeur dans cette plage de donné, du coup il faut que je emtte
machin even false pour éviter que ça soit pris en compte,
faut que j'essaie xD
Nan mais je réfléchis en écrivant du coup ça donne n'importe quoi ;)
En faite j'ai déjà une macro d'activé sur la feuille ou il y a plageDou et j'avais completement zappé, donc j'ai une erreur qui s'affiche parce que je viens parasyter la macro qui est déjà là ... :x
Donc j'ai essayé de le faire sur une autre feuille, et ça me note toutes mes valeurs en ligne 2, lign ne s'incrémente pas
En faite j'ai déjà une macro d'activé sur la feuille ou il y a plageDou et j'avais completement zappé, donc j'ai une erreur qui s'affiche parce que je viens parasyter la macro qui est déjà là ... :x
Donc j'ai essayé de le faire sur une autre feuille, et ça me note toutes mes valeurs en ligne 2, lign ne s'incrémente pas
Bon j'ai trifouiller hein :x
Sub Chercher()
Dim FeExtrac As Worksheet
Dim FeDou As Worksheet
Dim PlageExtrac As Range
Dim PlageDou As Range
Dim Cel As Range
Dim FeType As Worksheet
Dim Lign As Long
Set FeType = Worksheets("Feuille Type")
Set FeExtrac = Worksheets("Extraction cia flu")
Set FeDou = Worksheets("Douchette")
'plage de valeurs cherchées en feuille "Extrac"
With FeExtrac
Set PlageExtrac = .Range(.[A1], .[A65536].End(xlUp))
End With
'plage de recherche en feuille "Douchette"
With FeDou
Set PlageDou = .Range(.[A1], .[A65536].End(xlUp))
End With
'recherche et affiche un message si valeur absente
For Each Cel In PlageExtrac
If Application.CountIf(PlageDou, Cel) = 0 Then
MsgBox "Le produit " & Cel & " est manquant !"
With FeType
Lign = .Cells(65536, 1).End(xlUp).Row + 1
.Cells(Lign, 3).Value = Cel.Value
End With
End If
Next Cel
Call Module1.Somme
End Sub