1. Ce site utilise des "témoins de connexion" (cookies) conformes aux textes de l'Union Européenne. Continuer à naviguer sur nos pages vaut acceptation de notre règlement en la matière. En savoir plus.

XL 2016 macro pour rechercher et sauvegarder un champs d'un onglet à l'autre

Discussion dans 'Forum Excel' démarrée par benjy555, 8 Février 2019.

  1. benjy555

    benjy555 XLDnaute Junior

    Inscrit depuis le :
    27 Mars 2013
    Messages :
    50
    "J'aime" reçus :
    0
    Bonjour

    Pour celles et ceux qui pourront m'aider, un grand MERCI [​IMG]

    je tiens a préciser que j'ai publier cette question sur un autre forum mais je n'arrive pas a avoir de solution et c'est vraiment urgent pour moi. Je m'excuse du désagrément.

    Voici l'idée et en PJ un fichier exemple :
    j'ai dans un onglet 1 , une cellule en G6 ou je rentre un code barre
    Sur l'onglet 2 il y a une base de donnée, et en colonne D il y a toute une liste de Code Barre

    Le but est que lorsque je rentre un code barre (onglet 1 bis) immédiatement et de façon transparente (en arrière plan) viennent s’inscrire de façon permanente en face de la bonne ligne sur la base de donnée (onglet 2 bis) cellule F8 un "oui" ainsi que la date du jour en H8.

    Je précise que les onglet bis ne sont la que pour décomposer le mouvement et que ce soit plus compréhensible
    En vrai il n'y a que 2 onglet : un ou on entre les code barre un après l'autre puis le second ou viennent s'enregistrer tous les code barre qu'on aura rentré.

    Une subtilité : est il possible en plus de détecter si le code barre qu'on entre n'existe pas dans la liste ? et dans ce cas lancer un message d'erreur puis sauvegarder ce dernier dans un 3 ieme onglet les uns à la suite des autres.


    je suis sur excel 2016

    merci beaucoup
     

    Pièces jointes:

    • merci.xlsx
      Taille du fichier:
      17.2 Ko
      Affichages:
      17
  2. Chargement...

    Discussions similaires - macro rechercher sauvegarder Forum Date
    Macro : rechercher remplacer Forum Excel 18 Janvier 2019
    Macro pour copier/coller + Macro Rechercher/Remplacer Forum Excel 20 Novembre 2017
    Macro rechercher et copier lignes selon le critère d'une colonne Forum Excel 8 Février 2017
    XL 2013 [Résolu]macro pour rechercher valeur dans une colonne et mettre en couleur la cellul Forum Excel 6 Décembre 2015
    macro pour rechercher et ecrire les occurences dans une table Forum Excel 27 Octobre 2015

  3. pierrejean

    pierrejean XLDnaute Barbatruc

    Inscrit depuis le :
    19 Janvier 2006
    Messages :
    15367
    "J'aime" reçus :
    591
    Habite à:
    69400 LIMAS
    Utilise:
    Excel 2010 (PC)
    Bonjour Benjy555

    A tester:
     

    Pièces jointes:

    • merci.xlsm
      Taille du fichier:
      24.1 Ko
      Affichages:
      11
  4. chris

    chris XLDnaute Barbatruc

    Inscrit depuis le :
    21 Février 2005
    Messages :
    11335
    "J'aime" reçus :
    622
    Habite à:
    près de St Quentin en Yvelines/ Excel 2010 à 2019
    Utilise:
    Excel 2010 (PC)
    Bonjour à tous ;)

    J'avais fait donc je poste. Même principe mais au cas où la liste serait longue, j'ai utilisé un tableau statique...

    Code (Text):
    Private Sub Worksheet_Change(ByVal Target As Range)

        If Intersect(Target, [G6]) Is Nothing Or Target.Count > 1 Then Exit Sub
     
        Dim Trouve As Boolean
        Static Etat
        If IsEmpty(Etat) Then
            With Worksheets("2").[a3].CurrentRegion
                Etat = .Offset(1, 0).Resize(.Rows.Count - 1, 7)
            End With
        End If
        For i = 1 To UBound(Etat, 1)
            If Etat(i, 4) = Target Then
                Worksheets("2").Cells(i + 3, 6) = "OUI"
                Worksheets("2").Cells(i + 3, 7) = Date
                Trouve = True
                Exit For
            End If
        Next i
        If Trouve = False Then
            MsgBox "Code Inexistant"
            Worksheets("3").Cells(Worksheets("3").Cells(Rows.Count, 1).End(xlUp).Row + 1, 1) = Target
        End If

    End Sub
     
     
  5. pierrejean

    pierrejean XLDnaute Barbatruc

    Inscrit depuis le :
    19 Janvier 2006
    Messages :
    15367
    "J'aime" reçus :
    591
    Habite à:
    69400 LIMAS
    Utilise:
    Excel 2010 (PC)
  6. benjy555

    benjy555 XLDnaute Junior

    Inscrit depuis le :
    27 Mars 2013
    Messages :
    50
    "J'aime" reçus :
    0
    @pierrejean @chris

    un enorme merci pour cette aide vos deux solution fonctionnent parfaitement

    pour ma curiosité , qu'est que le tableau statique ? pourriez vous m'expliquer la différence du coup entre les deux procédé ?

    merci
     
  7. chris

    chris XLDnaute Barbatruc

    Inscrit depuis le :
    21 Février 2005
    Messages :
    11335
    "J'aime" reçus :
    622
    Habite à:
    près de St Quentin en Yvelines/ Excel 2010 à 2019
    Utilise:
    Excel 2010 (PC)
    Re

    Cela charge une fois pour toute en mémoire la liste des codes barres de la feuille 2, ce qui accelère le traitement par rapport à une boucle sur la feuille. Si la liste est courte on ne voit pas la différence mais on peut le voir sur une liste longue.

    A noter que Pierre Jean, à qui je fais la bise ;) , a oublié de contrôler qu'on saisit bien en G6 et pas ailleurs et moi même oublié le cas d'une suppression
    Donc remplacer la ligne de contrôle (ou l'ajouter)
    Code (Text):
     If Intersect(Target, [G6]) Is Nothing Or Target.Count > 1 or Target.Value="" Then Exit Sub
     
  8. benjy555

    benjy555 XLDnaute Junior

    Inscrit depuis le :
    27 Mars 2013
    Messages :
    50
    "J'aime" reçus :
    0
    @chris figurez vous que je m'en suis rendu compte avec mes minces connaissances et j'ai deja fait un mix entre votre proposition et celle de @pierrejean et j'ai donc pu traité le cas du champs laissé à vide suite à une suppression. ce qui est en soit un modif et donc viendrait ecrire dans l'autre onglet avec le champs vide...

    En revanche il y une chose que je n'arrive pas à faire : faire en sorte qu'a la fin de chaque coup, une fois le code renseigné le curseur reste toujours sur la cellule G6 dans l'attente direct de la prochaine saisie.

    j'ai placé un Range("G6").Select partout mais rien à faire !
     
  9. pierrejean

    pierrejean XLDnaute Barbatruc

    Inscrit depuis le :
    19 Janvier 2006
    Messages :
    15367
    "J'aime" reçus :
    591
    Habite à:
    69400 LIMAS
    Utilise:
    Excel 2010 (PC)
    Re
    Version avec utilisation de tableau (plus rapide suivant suggestion de chris :):)) , vérification de changement en G6 et retour en G6
     

    Pièces jointes:

    • merci.xlsm
      Taille du fichier:
      24.8 Ko
      Affichages:
      6
  10. benjy555

    benjy555 XLDnaute Junior

    Inscrit depuis le :
    27 Mars 2013
    Messages :
    50
    "J'aime" reçus :
    0
    en effet, c'est maintenant similaire @pierrejean
    sauriez vous ou placer le Range("G6").Select dans la version de @chris ?
    j'ai pu le mettre dans le cas ou le colis n'est pas reconnu mais dans le cas ou le code est bien reconnu, je passe automatiquement sur la cellule du bas je n'arrive pas à faire en sorte de rester en G6

    merci
     
  11. pierrejean

    pierrejean XLDnaute Barbatruc

    Inscrit depuis le :
    19 Janvier 2006
    Messages :
    15367
    "J'aime" reçus :
    591
    Habite à:
    69400 LIMAS
    Utilise:
    Excel 2010 (PC)
    Re
     

    Pièces jointes:

    • merci.xlsm
      Taille du fichier:
      26.3 Ko
      Affichages:
      6
  12. benjy555

    benjy555 XLDnaute Junior

    Inscrit depuis le :
    27 Mars 2013
    Messages :
    50
    "J'aime" reçus :
    0
    un grand merci à vous
     

Partager cette page