Completer une macro existante

Résolu
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 :

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

11 réponses

  1. Doudou95 Messages postés 1897 Date d'inscription   Statut Membre Dernière intervention   275
     
    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?
    0
  2. Edaine Messages postés 63 Statut Membre
     
    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
    0
  3. Doudou95 Messages postés 1897 Date d'inscription   Statut Membre Dernière intervention   275
     
    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?
    0
  4. Edaine Messages postés 63 Statut Membre
     
    Honnetement,

    J'ai rien compris ^^',

    Ca fait 5 fois que je relis .. J'arrive pas x_O
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Doudou95 Messages postés 1897 Date d'inscription   Statut Membre Dernière intervention   275
     
    ça a pas gardé les espaces :( pourtant je te lai écrit en Algo, enfin en français quoi
    0
  7. Edaine Messages postés 63 Statut Membre
     
    Ca doit être pour ça xDDDD

    J'ai du mal aujourd'hui ...

    J'arrive même pas à comprendre du français :s
    0
  8. Edaine Messages postés 63 Statut Membre
     
    J'ai compris !
    0
  9. Edaine Messages postés 63 Statut Membre
     
    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
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Bonjour,
      '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
      0
    2. Doudou95 Messages postés 1897 Date d'inscription   Statut Membre Dernière intervention   275
       
      J'ai appris le VB en autodidacte je ne connais pas tout mais j'avais enfin compris j'aurai trouvé un truc mais toi ce sera bien plus propre
      0
  10. Doudou95 Messages postés 1897 Date d'inscription   Statut Membre Dernière intervention   275
     
    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
    0
  11. Edaine Messages postés 63 Statut Membre
     
    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 ^^
    0
  12. Edaine Messages postés 63 Statut Membre
     
    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
    0
    1. Edaine Messages postés 63 Statut Membre
       
      Je pense que ça va etre trop compliqué u_u

      RAaaaaaaah,

      D'ici ce w-e, je n'ai plus de cheveux ><
      0
    2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      @ Edaine : qu'elle précision... mais après ça me met une erreur ????
      du coup il faut que je emtte machin even false pour éviter que ça soit pris en compte très clair pour moi!!!

      @ Doudou, continue à apporter ton aide sur ce sujet, pas de souci, dans 2 têtes on en trouve plus que dans une seule.
      0
    3. Edaine Messages postés 63 Statut Membre
       
      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
      0
    4. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Fais un copier/coller de ton code stp.
      0
    5. Edaine Messages postés 63 Statut Membre
       
      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
      0