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 et opération entre Feuil


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de mat-tech
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 202
    Par défaut Recherche et opération entre Feuil
    Bonjour à tous,

    A l'aide d'une macro j'aimerai que c'elle-ci regarde 2 cellules dans une "Releve" (l'une au dessus de l'autre), c'elles-ci sont des dates, ensuite qu'elle recherche ces dates dans "gazinfo" et qu'elle fasse une addition des cellules des lignes comprises entre ces date pour les colonnes voisine (des nombres ex 12,2).

    J'ai un code mais celui-ci ne fonctionne pas (rien ne se passe, et "erreur 13"), mais je ne vois pas mon erreur( sans doute lorsque le programme arrive a une case vide)

    Merci pour votre aide

    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
     
    Private Sub CommandButton1_Click()
    Dim i, j As Integer
    Dim Ligdeb, LigFin As Integer
    Dim Datedeb, Datefin As Date
    Dim celdate As String
    Dim rep As Variant
     
    For j = 3 To Sheets("Releve").Cells(Rows, 1).End(xlUp).Row
     
        Datedeb = Sheets("Releve").Range("B" & j)
        Datefin = Sheets("Releve").Range("B" & j + 1)
     
        With Sheets("gazinfo")
            For i = 3 To .Cells(Rows.Count, 2).End(xlUp).Row
                If .Cells(i, 2) = Datedeb Then
                    Ligdeb = i
                    Exit For
                End If
            Next
            For i = 3 To .Cells(Rows.Count, 2).End(xlUp).Row
                If .Cells(i, 2) = Datefin Then
                    LigFin = i
                    Exit For
                End If
            Next
        End With
    Range("H" & i + 1) = "=SUM(gazinfo!R" & Ligdeb & "C6:R" & Ligdeb & "C6)"
     
    Next
     
    End Sub

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut mat-tech et le forum
    Comprend pas tout, donc j'ai pas testé
    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
    Private Sub CommandButton1_Click()
    Dim i As Long, j As Long
    Dim Ligdeb As Long, LigFin As Long
    Dim Datedeb As Date, Datefin As Date
    Dim Celdate As String
    Dim rep
     
    For j = 3 To Sheets("Releve").Cells(Rows, "A").End(xlUp).Row 'step 2
    'Pour J = 3 jusqu'à dernière de A
        Datedeb = Sheets("Releve").Range("B" & j)
        Datefin = Sheets("Releve").Range("B" & j + 1)
        'On fixe les dates, mais
        'J=3 => Datedeb=B3 et Datefin B4
        'J=4 => Datedeb=B4 et Datefin B5 est-ce normal qu'on réutilise B4 ?
     
        With Sheets("gazinfo")
            For i = 3 To .Cells(Rows.Count, "B").End(xlUp).Row
                If .Cells(i, "B") >= Datedeb Then
                    Ligdeb = i
                    Exit For
                End If
            Next
            'sert à trouver la première date. si elle n'existe pas, la
            'première qui est supérieure
            For i = 3 To .Cells(Rows.Count, 2).End(xlUp).Row
                If .Cells(i, "B") >= Datefin Or _
                   i = .Cells(Rows.Count, 2).End(xlUp).Row Then
                    LigFin = i
                    Exit For
                End If
            Next
            'même logique de travail
        End With
    Range("H" & i + 1).FormulaR1C1 = "=SUM(gazinfo!R" & Ligdeb & "C6:R" & Ligdeb & "C6)"
    'Faut expliquer à Excel que c'est une formule RC
    Next
    End Sub
    La dernière instruction est sur la page Active et non sur la feuille "Releve", et à la ligne i => moi j'aurais mis la ligne J
    C6 donne la colonne F
    A+

  3. #3
    Membre confirmé Avatar de mat-tech
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 202
    Par défaut
    Pour répondre a ta question oui c'est normal qu'on utilise 2 fois une même cellule, car au premier passage elle sert de datefin et au second passage elle sert de datedeb.

    J'ai essayé ton code mais j'ai une " erreur 13 incompatibilité de type" à la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    For j = 3 To Sheets("Releve").Cells(Rows, "A").End(xlUp).Row Step 1
    Pour mieux comprendre en fichier joint il y a mon classeur si tu veux.

    Merci

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut mat-tech et le forum
    J'ai fait comme toi, j'ai lu en travers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    For j = 3 To Sheets("Releve").Cells(Rows.count, "A").End(xlUp).Row Step 1
    Devrais être moins mauvais
    A+

  5. #5
    Membre confirmé Avatar de mat-tech
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 202
    Par défaut
    Autant pour moi ...

    Voilà il n'y a plus d'erreur, mais il n'y a rien qui se passe, fin il affiche dans H4
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =SOMME(gazinfo!$F$3:$F$3)
    Juste dans H4

    La y a quelque chose qui m'échappe

  6. #6
    Membre confirmé Avatar de mat-tech
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 202
    Par défaut
    Bon avec recherche j'ai trouvé mes différentes erreurS
    et ca donne :

    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
     
    Dim Ligdeb As Long, LigFin As Long
    Dim Datedeb As Date, Datefin As Date
    Dim Celdate As String
    Dim rep
     
    'For j = 3 To Sheets("Releve").Cells(Rows, "A").End(xlUp).Row
    For j = 3 To Sheets("Releve").Cells(Rows.Count, "A").End(xlUp).Row
     
    'Pour J = 3 jusqu'à dernière de A
        Datedeb = Sheets("Releve").Range("A" & j)
        Datefin = Sheets("Releve").Range("A" & j + 1)
        'On fixe les dates, mais
        'J=3 => Datedeb=B3 et Datefin B4
        'J=4 => Datedeb=B4 et Datefin B5 est-ce normal qu'on réutilise B4 ?
     
        With Sheets("gazinfo")
            For i = 3 To .Cells(Rows.Count, "B").End(xlUp).Row
                If .Cells(i, "B") >= Datedeb Then
                    Ligdeb = i
                    Exit For
                End If
            Next
            'sert à trouver la première date. si elle n'existe pas, la
            'première qui est supérieure
            For i = 3 To .Cells(Rows.Count, "B").End(xlUp).Row
                If .Cells(i, "B") >= Datefin Or _
                   i = .Cells(Rows.Count, "B").End(xlUp).Row Then
                    LigFin = i
                    Exit For
                End If
            Next
            'même logique de travail
        End With
    Range("H" & j + 1).FormulaR1C1 = "=SUM(gazinfo!R" & Ligdeb & "C6:R" & LigFin & "C6)"
    'Faut expliquer à Excel que c'est une formule RC
    Next
    End Sub
    Merci le forum

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

Discussions similaires

  1. recherche de données dans feuil excel
    Par tigdub1gal dans le forum Excel
    Réponses: 3
    Dernier message: 24/05/2007, 17h58
  2. Recherche de corrélation entre 2 images via leur profil
    Par Orus dans le forum Traitement d'images
    Réponses: 82
    Dernier message: 30/04/2007, 17h06
  3. [Oracle] Recherche de doublons entre 2 tables
    Par Isa31 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 16/02/2006, 14h23
  4. recherche valeur maximale entre deux champs
    Par maysa dans le forum Langage SQL
    Réponses: 6
    Dernier message: 25/05/2005, 09h40
  5. recherche composant hybride entre le ComboBox et le DBLookup
    Par Calixte dans le forum Bases de données
    Réponses: 3
    Dernier message: 14/06/2004, 13h32

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