![]() |
| Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé. | |||||||
|
|||||||
![]() |
|
|
Outils de la discussion |
|
|
#1 (permalink) |
|
Membre actif
![]() Date d'inscription: avril 2006
Localisation: Bruxelles
Messages: 171
|
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 :
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 (permalink) |
|
Membre Expert
![]() Date d'inscription: juillet 2007
Localisation: Loire Atlantique (44)
Âge: 52
Messages: 1 000
|
Salut mat-tech et le forum
Comprend pas tout, donc j'ai pas testé Code :
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 C6 donne la colonne F A+ |
|
|
|
|
|
#3 (permalink) |
|
Membre actif
![]() Date d'inscription: avril 2006
Localisation: Bruxelles
Messages: 171
|
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 :
For j = 3 To Sheets("Releve").Cells(Rows, "A").End(xlUp).Row Step 1 Merci
__________________
![]()
|
|
|
|
|
|
#4 (permalink) |
|
Membre Expert
![]() Date d'inscription: juillet 2007
Localisation: Loire Atlantique (44)
Âge: 52
Messages: 1 000
|
Salut mat-tech et le forum
J'ai fait comme toi, j'ai lu en travers Code :
For j = 3 To Sheets("Releve").Cells(Rows.count, "A").End(xlUp).Row Step 1 A+ |
|
|
|
|
|
#5 (permalink) |
|
Membre actif
![]() Date d'inscription: avril 2006
Localisation: Bruxelles
Messages: 171
|
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 :
=SOMME(gazinfo!$F$3:$F$3) La y a quelque chose qui m'échappe
__________________
![]()
|
|
|
|
|
|
#6 (permalink) |
|
Membre actif
![]() Date d'inscription: avril 2006
Localisation: Bruxelles
Messages: 171
|
Bon avec recherche j'ai trouvé mes différentes erreurS
et ca donne : Code :
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
__________________
![]()
|
|
|
|
![]() |
![]() |
||
Recherche et opération entre Feuil
|
||
Offres d'
emploi informatique
sur Lesjeudis.com
|
| Outils de la discussion | |
|
|