IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

recherche linéaire et report [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 93
    Points : 74
    Points
    74
    Par défaut recherche linéaire et report
    Bonjour tout le monde !!

    j'essaie de finir une fonction qui va reporter les champs correspondant à chaque code trouvé dans le classeur destination .

    l'idée est de parcourir tout les codes de la colonne A du classeur source et de faire une recherche dans le classeur destination .

    le soucis que j'ai en ce moment est que je dois désigner le classeur à partir du quelle je lance la recherche car la boucle s’exécute sur le classeur cible!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    Private Sub Reporter()
        Dim cible As Variant
        Dim ligne As Integer
        Dim bat As Variant
        Dim pr As String
     
     
     For ligne = 4 To 10
        If (IsEmpty(Range("A" & ligne))) Then
        MsgBox "Code Article Manquant à la ligne " & ligne
        Exit Sub
        Else
        cible = Range("A" & ligne)
        prs = Range("D" & ligne)
        End If
        If (IsEmpty(Range("F" & ligne))) Then
        batch = Range("E" & ligne)
        Else
        batch = Range("F" & ligne)
        End If
        Call test(cible, pr, bat)
     Next ligne
     
     
    End Sub
     
    Sub test(cible, pr, bat)
    Dim x As Variant
    Dim Val As Range
     Application.ScreenUpdating = False
     Application.DisplayAlerts = False
     
     Set wbk = Workbooks.Open("C:\Documents and Settings\FR22034\Bureau\Quotationtemplate_Rev05.xlsm", IgnoreReadOnlyrecommended:=True, WriteResPassword:="pg")
     With wbk.Worksheets("Cables data")
     Set Val = .Columns("c:c").Find(cible, LookIn:=xlValues)
     If Not Val Is Nothing Then
       MsgBox "Le Code Article" & cible & "est dans la ligne: " & Val.Row
          .Cells(Val.Row, 11).Value = pr
           .Cells(Val.Row, 12).Value = bat
           .Cells(Val.Row, 13).Value = Format(Now(), "dd-mmmm-yy")
            Else
        MsgBox "Code Article " & cible & " non trouvée."
     End If
     End With
     wbk.Save
     wbk.Close
        Set wbk = Nothing
        Application.ScreenUpdating = True
     
    End Sub
    je vous remercie de votre collaboration.

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Puisque tu travailles avec 2 classeurs, il faut indiquer la feuille mère et le classeur père des range
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Private Sub Reporter()
    Dim Cible As Variant
    Dim Ligne As Integer
    Dim Batch As Variant
    Dim Prs As String
     
    With ThisWorkbook.Worksheets("Feuil1")
        For Ligne = 4 To 10
            If IsEmpty(.Range("A" & Ligne)) Then
                MsgBox "Code Article Manquant à la ligne " & Ligne
                Exit Sub
            Else
                Cible = .Range("A" & Ligne)
                Prs = .Range("D" & Ligne)
            End If
            If IsEmpty(.Range("F" & Ligne)) Then
                Batch = .Range("E" & Ligne)
            Else
                Batch = .Range("F" & Ligne)
            End If
            Call Test(Cible, Prs, Batch)
        Next Ligne
    End With
    End Sub

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 93
    Points : 74
    Points
    74
    Par défaut
    un grand merci pour votre aide avec du retard,bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Divers] Recherche systeme de reporting
    Par cedlannoy dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 25/02/2008, 16h10
  2. [Bug Report] Fonction de recherche
    Par Pouic dans le forum Evolutions du club
    Réponses: 4
    Dernier message: 13/04/2007, 20h36
  3. [Crystal Reports] Recherche tutoriel pour CODE
    Par s.n.a.f.u dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 08/01/2007, 23h21
  4. Recherche Documentation Reports
    Par Kro_64 dans le forum Reports
    Réponses: 1
    Dernier message: 21/06/2006, 21h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo