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 :

Selection de cellule dans plusieurs feuilles


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 38
    Points : 38
    Points
    38
    Par défaut Selection de cellule dans plusieurs feuilles
    Bonjour, j'aimerais savoir comment fais -t-on pour sélectionner des cellules qui se trouvents sur plusieurs feuilles. J'ai essayé la sybtaxe suivante sans succès, VB ne reconnait pas la methode. Quelqu'un peut-il m'aider svp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Private Sub Bt_MoyenneJour_Click()
    Dim NbJour As Integer, i As Integer
    Dim MesFeuilles As Sheets
    Dim DateT As Date
    NbJour = 0
    For Each MesFeuilles In ActiveWorkbook
       For i = 38 To 70
          If MesFeuilles.Cells(i, 3).Value = DateT Then
             NbJour = NbJour + 1
          End If
       Next i
    Next MesFeuilles
    End Sub
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim MesFeuilles As Worksheets
    MesFeuilles.Cells(i, 3)
    sa ne marche pas non plus

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 491
    Points : 542
    Points
    542
    Par défaut
    bonjour

    essaye
    For Each MesFeuilles In Worksheets
    la boucle for each bouclant sur chaque elements de la collection
    for each element in group

    pas testé

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 491
    Points : 542
    Points
    542
    Par défaut
    j ai oublié
    Dim MesFeuilles As worksheet

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    salut vuong
    je n'ai pas trouvé l'astuce non plus, pourtant a priori, le code n'est pas mauvais, mais c'est une histoire de définition de la collection, bref, il est 6 h du mat....
    utilise ça, c'est moins poétique mais ça marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Bt_MoyenneJour_Click()
    Dim NbJour As Integer, i As Integer
    Dim DateT As Date
    NbJour = 0
    For j = 1 To Sheets.Count
       For i = 38 To 70
          If Sheets(j).Cells(i, 3).Value = DateT Then
             NbJour = NbJour + 1
          End If
       Next i
    Next j
    End Sub

  5. #5
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Un code "propre" avec instanciation (mise en application des conseils de patbou):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Bt_MoyenneJour_Click()
    Dim NbJour As Integer, i As Integer
    Dim wksSheet As Worksheet
    Dim DateT As Date
    NbJour = 0
    For Each wksSheet In Worksheets
       For i = 38 To 70
          If wksSheet.Cells(i, 3).Value = DateT Then
             NbJour = NbJour + 1
          End If
       Next i
    Next wksSheet
    End Sub

  6. #6
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 38
    Points : 38
    Points
    38
    Par défaut
    Vous aviez raison, il s'agissait du problème de collection sa marche mais pas tout à fait, il me compte pas le bon nombre de cellule. Jai essayé sur une seule feuille, VBA me retourne 8 alors qu'il y en a 23 sachant que les dates sont definies à partir de la premiere cellule, les autres j'y ajoute le nombre de jour supplémentaire, pouvez-vous me dire à quoi cela est du pourtant je declare bien une variable DateT de type date. 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
     
    Private Sub Bt_MoyenneJour_Click()
    Dim NbJour As Integer, i As Integer
    Dim DateT As Date
    NbJour = 0
     
       For i = 38 To 70
          If Sheets(2).Cells(i, 3).Value = DateT Then
             NbJour = NbJour + 1
          End If
       Next i
     
    MsgBox (Sheets.Count)
    MsgBox (NbJour)
    End Sub

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Si tu ne mets rien dans DateT, tu compares Rien avec le contenu d'une cellule, alors ton test ne sert à rien. Tu peux donc supprimer tout ça
    For i = 38 To 70
    ......If Sheets(2).Cells(i, 3).Value = DateT Then
    ...........NbJour = NbJour + 1
    ......End If
    Next i
    et mettre directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MsgBox (Sheets.Count)
    MsgBox 0
    C'est lundi, je plaisante
    Dis-nous ce que tu veux faire, on pourra sans doute t'aider

  8. #8
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 38
    Points : 38
    Points
    38
    Par défaut
    Je souhaite compté le nombre de cellule où il y a une date dans chaque feuille, il s'agit de faire une moyenne journalière. Je pense qu'il faut voir avec la fonction format ce que je suis entrain de faire mais j'avoue c'est un peu compliqué.

  9. #9
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 38
    Points : 38
    Points
    38
    Par défaut
    Voilà ce que j'ai essayé mais il ne me trouve toujours pas le bon nombre de cellule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Dim NbJour As Integer, i As Integer
    Dim DateT As String
    NbJour = 0
    For j = 1 To Sheets.Count
       For i = 38 To 70
          DateT = Format(Sheets(j).Cells(i, 3).Value, "jjjj jj/mm")
          If Sheets(j).Cells(i, 3).Value = DateT Then
             NbJour = NbJour + 1
          End If
       Next i
    Next j
    MsgBox (NbJour)
    End Sub

  10. #10
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Là, tu ne regardes que dans une feuille (Sheets(2)) mais je pense que tu le sais.
    Regarde la fonction IsDate, dans l'aide et teste ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
       For i = 38 To 70
          If isdate (Sheets(j).Cells(i, 3).Value) Then
             NbJour = NbJour + 1
          End If
       Next i
    Tu dis
    A+

  11. #11
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 38
    Points : 38
    Points
    38
    Par défaut
    Ok je voit, merci mek ++

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

Discussions similaires

  1. [XL-2013] Pb dans la somme de cellules de plusieurs feuilles
    Par Manu54 dans le forum Excel
    Réponses: 6
    Dernier message: 23/11/2014, 20h29
  2. [XL-2000] Donner le même nom à une cellule dans plusieurs feuilles
    Par s.echeff dans le forum Excel
    Réponses: 5
    Dernier message: 07/04/2009, 15h55
  3. reporter une cellule dans plusieurs feuilles excel
    Par tigdub1gal dans le forum Excel
    Réponses: 17
    Dernier message: 07/06/2007, 01h23
  4. [VBA-E]Instancier une plage de cellules prises dans plusieurs feuilles
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 14/03/2007, 12h08
  5. [VBA-E]Interdire la selection de cellule dans une feuille
    Par Tartenpion dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/03/2006, 23h24

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