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 :

[E-07] Recherche de valeurs pour faire un bilan


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 10
    Points : 5
    Points
    5
    Par défaut [E-07] Recherche de valeurs pour faire un bilan
    Bonjour à tous,

    Je me permets de vous solliciter pour une aide sur Excel, plus précisément sur du VBA. Voilà mon problème :

    J'ai des tableaux avec des numéros clients, nom client et nom de chantier dans plusieurs fichiers excel, et je souhaiterais faire un fichier excel pour me permettre de faire un bilan.
    Je viens de me faire un petit excel pour travailler au développement de cette future feuille bilan et je bloque :

    Lorsque je donne le numéro client (dans la cellule K3), il trouve bien les valeurs mais il les écrit au même endroit (il y a un problème avec mon "compteur"), je ne sais pas si je suis bien clair

    Voici le code :

    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
    Private Sub CommandButton2_Click()
     
    Dim ARECHERCHER As Integer
    Dim celluletrouvee As Range
     
    ARECHERCHER = Range("k3").Value
    compteur = Range("I1").Value
     
    With Worksheets("Feuil1").Range("a1:a16")
        Set c = .Find(ARECHERCHER, LookIn:=xlValues)
     
        If Not c Is Nothing Then
            firstAddress = c.Address
            Do
     
              ' Chantier
                c.Select
            ActiveCell.Offset(0, 1).Select
            Selection.Copy
            Range("F4").Offset(compteur, 0).Select
            ActiveSheet.Paste
     
     
            ' Client
            c.Select
            ActiveCell.Offset(0, 2).Select
            Selection.Copy
            Range("F4").Offset(compteur, 1).Select
            ActiveSheet.Paste
     
     
        Application.CutCopyMode = False
        Range("I1").Value = compteur + 1
     
                Set c = .FindNext(c)
     
            Loop While Not c Is Nothing And c.Address <> firstAddress
        End If
    End With
     
    End Sub

    Merci d'avance

  2. #2
    Membre confirmé Avatar de drakkar_agfa
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 618
    Points : 638
    Points
    638
    Par défaut
    Bonjour,

    le forum est la pour ça! C'est bien un forum d'aide sur VBA excel

    En regardant ton code, p-e que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("I1").Value = compteur + 1
    deviendrait
    Et si c'est possible (probablement) évite les Select et Selection.
    Avec les Select et sans savoir où son placé les cellule copiée et collée, il m'est difficile de tester.

    Regarde ça et donne des nouvelles!

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Non ça ne fonctionnement pas.

    Voici une image d'excel :




    Donc je donne le numéro client en "K3", et je souhaiterais qu'il me donne les résultats pour ce client dans le tableau "F4:G19".
    Actuellement, il trouve le numéro client en "A9" et indique bien le chantier en "F4" et le nom du client en "G4", ensuite il trouve bien le numéro client en "A12", mais il indique le chantier en "F4" (et non en "F5") et le nom du client en "G4" (et non en "G5"), voila pourquoi je pensais à un problème dans mon compteur

  4. #4
    Membre confirmé Avatar de drakkar_agfa
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 618
    Points : 638
    Points
    638
    Par défaut
    AH AH!!!

    Maintenant je comprends!
    Avec une recherche, tu veux sortir la liste qui correspond à la recherche...

    Et le I1 représente quoi?

    Avec ces infos, tout ira bien!

  5. #5
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    bonsoir,

    essaie ça

    Dans la mesure du possible, évite les select.
    J'ai ajouté LookAt:=xlWhole pour éviter les conflits de 5 vs 15.
    Prends l'habitude d'initialiser tes variables.
    Ici Compteur est le numéro de la première cellule libre de la colonne F
    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
    Option Explicit
     
    Private Sub CommandButton2_Click()
     
    Dim ARECHERCHER As Integer
    Dim celluletrouvee As Range
    Dim Compteur As Integer
    Dim C As Range
    Dim firstAddress As String
     
    ARECHERCHER = Range("k3").Value
    Compteur = Range("I1").Value
     
    With Worksheets("Feuil1").Range("a1:a16")
        Set C = .Find(ARECHERCHER, LookIn:=xlValues, LookAt:=xlWhole)
     
        If Not C Is Nothing Then
            firstAddress = C.Address
            Do
     
            ' Chantier
            Cells(Compteur, "F") = C(1, 2)
     
            ' Client
            Cells(Compteur, "G") = C(1, 3)
     
     
        Range("I1").Value = Compteur + 1
     
                Set C = .FindNext(C)
     
            Loop While Not C Is Nothing And C.Address <> firstAddress
        End If
    End With
     
    End Sub
    Cordialement

  6. #6
    Membre confirmé Avatar de drakkar_agfa
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 618
    Points : 638
    Points
    638
    Par défaut
    Pas testé mais le compteur fait défaut
    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
    Private Sub CommandButton2_Click()
     
    Dim ARECHERCHER As Integer
    Dim celluletrouvee As Range
     
    ARECHERCHER = Range("k3").Value
    'ICI le compteur initialisé
    Compteur = 4
    With Worksheets("Feuil1").Range("a1:a16")
        Set C = .Find(ARECHERCHER, LookIn:=xlValues, LookAt:=xlWhole)
        
        If Not C Is Nothing Then
            firstAddress = C.Address
            Do
                
            ' Chantier
            Cells(Compteur, "F") = C(1, 2)
     
            ' Client
            Cells(Compteur, "G") = C(1, 3)
     
     'Incrémentation du compteur
        Compteur = Compteur + 1
        
                Set C = .FindNext(C)
                
            Loop While Not C Is Nothing And C.Address <> firstAddress
        End If
    End With
     
    'Affichage du nombre de boucle.
    Range("I1").Value= Compteur - 3
    
     
    End Sub

  7. #7
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    Le compteur est en I1
    Citation Envoyé par fred65200 Voir le message
    Ici Compteur est le numéro de la première cellule libre de la colonne F
    Cordialement

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Désolé mais ça ne fonctionne pas, j'ai une erreur d'exécution '1004' avec la ligne "Cells(Compteur, "F") = C(1, 2)"

  9. #9
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    testé chez moi, tout est ok

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 10
    Points : 5
    Points
    5
    Par défaut



  11. #11
    Membre confirmé Avatar de drakkar_agfa
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 618
    Points : 638
    Points
    638
    Par défaut
    Au début de ton code, ajoute ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("F4:G20").ClearContents
    Ça va vider la zone de résultat avant de commencer à la remplir.

    Testé aussi, tout fonctionne... peut-être du à la version 2007???

    Petite correction, changer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("I1").Value = Compteur - 4
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("I1").Value = Compteur - 5

  12. #12
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    qu'elle est la valeur de compteur?

    Je t'ai envoyé un classeur par MP

    @+

    EDIT Je suis aussi sur Excel 2007

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par fred65200 Voir le message
    qu'elle est la valeur de compteur?

    Je t'ai envoyé un classeur par MP

    @+

    EDIT Je suis aussi sur Excel 2007

    Je te remercie pour ton fichier. Effectivement ton fichier fonctionne parfaitement mais le mien, avec le même code a priori, ne veut rien savoir ?

    J'ai du passer un chapitre

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    J'ai trouvé d'où vient la différence et le problème : le problème vient du mode de sélection :



    Si tu supprimes ce système de sélection par une cellule classique ça ne fonctionne pas. Par la suite je vais avoir de grosse base de donnée et dans plusieurs fichiers excel donc je ne pourrais pas avoir une "pré-sélection"

  15. #15
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    rien à voir, testé dans les deux cas.
    @+

  16. #16
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Mea culpa, j'avais mis 0 dans la cellule compteur

    Par contre si on a deux numéros 8 comme dans mon exemple, ça ne fonctionne plus

  17. #17
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    ajoute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            Range("I1").Value = Compteur + 1
    'ligne à ajouter
        Compteur = Range("I1")
     
               Set C = .FindNext(C)
    @+

  18. #18
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Terrible ça fonctionne

    Un grand merci pour votre aide

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

Discussions similaires

  1. recherche un outil pour faire des tests automatisés
    Par loic33team dans le forum Outils
    Réponses: 0
    Dernier message: 06/04/2009, 09h58
  2. Réponses: 4
    Dernier message: 27/06/2008, 08h35
  3. Recherche outil CMS pour faire de la Gestion Electronique de Documents
    Par mounia.n dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 27/01/2008, 01h06
  4. Recherche un progs pour faire de la télémainteance sur ubuntu depuis windows
    Par jbidou88 dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 15/05/2007, 09h42
  5. recherche de module pour faire des graphiques
    Par Ickou dans le forum Modules
    Réponses: 1
    Dernier message: 01/11/2005, 22h20

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