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]Rechercher valeur dans chaque feuil => Copie vers zone definie par feuil


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 22
    Points : 23
    Points
    23
    Par défaut [E-07]Rechercher valeur dans chaque feuil => Copie vers zone definie par feuil
    Bonjour a tous et merci d avance pour vos eventuelle intervention

    voila mon probleme :
    je debute en vba et je ne connais pas bien les synthaxe et leur utiliter,
    mais voila je cherche le moyen de Rechercher dans chacune de mes feuille = selon la date demandée , genre demander de trouver toute les depense du 12/03/09 au 31/02/09 et de copier la ligne vers la feuille resumer dans la zone Feuille Corespondante
    difficulter suplémentaire il est possible d avoir deux meme date avec montant different dans la feuille Course

    j'espere m'etre bien expliquer

    en clair je voudrai via un commandButton deplacer tout mes depense sur la durée definie et en different type sur une feuille resumer que je pourai alors imprimer pour classer dans une farde

    voici un debut de code prenant en conmpte uniquement la feuille medecin mais ca plante lorsque je lance la recherche comme si il y avait surcharge de memoire...

    je n arrive toujours pas a copier la valeur dans une zone definie pour cette feuille

    merci d avance


    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
    Private Sub CommandButton2_Click() ' CMB rechercher
    Dim i As Integer 'pour pouvoir augmenter la valeur de la ligne apres chaque boucle de recherche
    Dim L As Integer 'pour trouver une ligne vide sur la feuille resumer
    Dim C As String ' determine le nom de la feuille destinataire ici Resumer
    Dim E As String ' definir le text demander dans la text box qui comprend ce que l on cherche a copier
    Dim d As String ' determine la feuille source medecin
    d = "MEDECIN"
    i = 1
    E = TextBox9.Text
    C = "Resume"
    L = Worksheets(C).Range("A1").CurrentRegion.Rows.Count 'trouver ligne vide
      While i < 15
       If Worksheets(d).Cells(i, 1).Value = E Then
       Worksheets(C).Cells(L+1, 1) = Worksheets(d).Cells(i, 1).Text 'copie la date dans la premiere colone
       Worksheets(C).Cells(L+1, 2) = Worksheets(d).Cells(i, 2).Text ' copie le montant dans la deuxieme colone
       Worksheets(C).Cells(L+1, 3) = Worksheets(d).Cells(i, 3).Text 'copie la description dans la 3eme colone
       Else
       i = i + 1 ' si la valeur ne corespond pas voir la ligne suivante
     
      End If
     
    Wend
    End Sub

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 87
    Points : 93
    Points
    93
    Par défaut
    il faut mettre le "i = i + 1" en dehors du test if Then..else..endIf. Car il faut passer à la ligne suivante si le texte ne correspond pas, mais aussi s'il correspond. Sinon lorsque la macro rencontre une valeur qui correspond elle l'écrit indéfiniment... et la tu dois entendre le ventilateur qui accélère...

    par ailleurs, si une valeur correspond et est écrite, il faut incrémenter L sinon ca sera toujours écrit sur la même ligne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    While i < 15
       If Worksheets(d).Cells(i, 1).Value = E Then
       Worksheets(C).Cells(L+1, 1) = Worksheets(d).Cells(i, 1).Text 'copie la date dans la premiere colone
       Worksheets(C).Cells(L+1, 2) = Worksheets(d).Cells(i, 2).Text ' copie le montant dans la deuxieme colone
       Worksheets(C).Cells(L+1, 3) = Worksheets(d).Cells(i, 3).Text 'copie la description dans la 3eme colone
       L = L +1   
       end If
     
       i = i + 1 ' voir la ligne suivante
    Wend

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 22
    Points : 23
    Points
    23
    Par défaut merci beaucoup
    merci bcp pour cette solution clair que le ventillo s accelere j ai l impresion que l ordi va decoller pour pluton quand je lance le programme

    si tu a une idée pour copier les valeur dans une zone definie elle est la bien venue merci encore

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 87
    Points : 93
    Points
    93
    Par défaut
    désolé d'avoir empéché la satellisation...

    je ne comprends pas bien ta question, j'ai l'impression que tu précises bien où tes données doivent être écrites puisque tu utilises "Worksheets(C).Cells(L+1, 1-2-3-etc...)"

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 22
    Points : 23
    Points
    23
    Par défaut
    apres essai en modifiant comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    If Worksheets(d).Cells(i, 1).Value = E Then
       Worksheets(C).Cells(L + 1, 1) = Worksheets(d).Cells(i, 1).Text
       Worksheets(C).Cells(L + 1, 2) = Worksheets(d).Cells(i, 2).Text
       Worksheets(C).Cells(L + 1, 3) = Worksheets(d).Cells(i, 3).Text
       Else
     
     
      End If
       i = i + 1
    le programme ne plante plus mais la il me met uniquement la valeur de la 8eme ligne il saute les 7 premiere et les 4 suivante

    donc j aimerai definir des zone dans la feuille resumer qui est "c"
    ici dans le code je n ai pris qu une seule feuille je n arrive pas a faire la recherche sur chaque feuille

    en faite pour la feuile "medecine" j aimerai creér un tableau qui s'autosize selon le nombre de donnée a y introduire et que chaque feuille posede sa propre zone autosize sur la feuille resumer
    en respectant un certain code de couleur pour chaque feuille differente pour que le resumer soit claire et trier par categorie je ne sais pas si je m exprime assez clairement

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 87
    Points : 93
    Points
    93
    Par défaut
    je ne pense pas que la macro saute les 7 premières lignes. Mais comme tu ne modifie pas L, elle réecrit par dessus, toujours à la meme ligne...
    c'est pourquoi il faut mettre L = L + 1 après avoir écrit. Cf le code de mon 1er post.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 22
    Points : 23
    Points
    23
    Par défaut impecable
    oui tout a fais pour l + 1 ca fonctnionne nickel
    maintenant pour le reste je peut a chaque sortie de boucle recommencer la boucle sur une autre feuille ce qui marcherait nickel
    mon autre probleme et de pouvoir effectuer une recherche entre le 1/03/09 et Le 31/03/09 par exemple enfin pouvoir modifer la plage de date a rechercher comme bon me semble

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

Discussions similaires

  1. Recherche Valeur dans plusieurs colonnes
    Par grec38 dans le forum Excel
    Réponses: 14
    Dernier message: 08/04/2008, 14h37
  2. recherche valeur dans fichier fermé
    Par afssaLERH dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 12/02/2008, 12h06
  3. Recherche valeurs dans tableau par Vlookup
    Par fabibou dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 22/08/2007, 11h51
  4. Recherche valeur dans table Access
    Par Stefloulou dans le forum Access
    Réponses: 1
    Dernier message: 05/11/2005, 08h45
  5. [Tableaux] Recherche valeur dans tableaux
    Par Kaimann dans le forum Langage
    Réponses: 10
    Dernier message: 21/10/2005, 11h57

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