Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/01/2012, 16h31   #1
Membre habitué
 
Homme christian
retraite
Inscription : avril 2010
Messages : 310
Détails du profil
Informations personnelles :
Nom : Homme christian
Âge : 56
Localisation : Espagne

Informations professionnelles :
Activité : retraite
Secteur : Industrie

Informations forums :
Inscription : avril 2010
Messages : 310
Points : 109
Points : 109
Par défaut Amelioration de code

bonjour
j'ai le code suivant et je souhaiterais lorsque je n'est pas encore de donnees sur ma feuille, que la case total = 0
car actuellement il me faut une donnee, sinon la macro s'arrete au niveau de total
Code :
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
42
43
44
45
46
47
48
49
50
Sub MaJList()
'il faut que tu supprimes ControleSource du TextBox1 dans les propriétés
Dim Total As Double
'Dans les propriété de ta ComboBox, met Style à fmStyleDropDownList, sa interdit à l'utilisateur de pouvoir taper n'importequoi
Dim ShBarbeuc As Worksheet
'On pointe sur la feuille Barbecue
Set ShBarbeuc = ThisWorkbook.Sheets("Barbecue")
 
'Suppression des titres de colonnes
ListView1.ColumnHeaders.Clear
 
'Alimentation des titres de colonne :
'Mais tu doit avoir la propriété View à lvwReport
 
ListView1.ColumnHeaders.Add , , "Mois", ListView1.Width * 0.1, lvwColumnLeft
ListView1.ColumnHeaders.Add , , "Nom", ListView1.Width * 0.22, lvwColumnLeft
ListView1.ColumnHeaders.Add , , "Nº MobilHome", ListView1.Width * 0.15, lvwColumnLeft
ListView1.ColumnHeaders.Add , , "Duree", ListView1.Width * 0.1, lvwColumnLeft
ListView1.ColumnHeaders.Add , , "Reglement", ListView1.Width * 0.12, lvwColumnLeft
ListView1.ColumnHeaders.Add , , "Prix Location", ListView1.Width * 0.13, lvwColumnLeft
ListView1.ColumnHeaders.Add , , "Total", ListView1.Width * 0.08, lvwColumnRight
ListView1.ColumnHeaders.Add , , "Caution", ListView1.Width * 0.1, lvwColumnCenter
 
 
With Me.ListView1
    .ListItems.Clear
    For Each V In ShBarbeuc.Range("A4:A" & ShBarbeuc.Cells(Rows.Count, "A").End(xlUp).Row)
        'Ici on controle que le mois inscrit dans la tableau Excel correspond bien au moi choisi
        'Si aucun moi n'a été choisi, on inscrit toutes les données
        'On passe les valeur en majuscule Ucase) pour ne pas etre dérangé par les majuscule en début de nom
        'Décembre n'est pas égale à décembre
        If (UCase(V.Text) = UCase(ComboBox1.Text)) Or (ComboBox1.Text = "Tous les mois") Then
            'On ajoute une ligne
            With .ListItems.Add(, , V.Text)
                .ForeColor = V.Font.Color
                For j = 1 To 8
                    .ListSubItems.Add , , V.Offset(0, j).Text
                    .ListSubItems(j).ForeColor = V.Offset(0, j).Font.Color
                Next j
            End With
            'On calcul le total
            Total = Total + CDbl(V.Offset(0, 6))
        End If
    Next V
End With
 
'On place Total dans le TExtbox1
TextBox1.Text = CStr(Total)
    Application.ScreenUpdating = True
End Sub
cris
chris09300 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 16h44   #2
Membre régulier
 
Femme
Inscription : septembre 2011
Messages : 86
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : septembre 2011
Messages : 86
Points : 75
Points : 75
Bonjour Chris,

D'après ce que j'ai lu, Total n'est pas une case mais un "double", résultat d'un calcul.

Soit tu dis que Total est une case et donc tu dis que sa valeur est égale à 0 quand une autre case est vide.
Code :
1
2
3
4
5
 
If Range("B2").value = "" then
    Range("B4") = 0
End if
Total = Range("B4").value

Soit tu initialises Total à 0 si une condition est vraie (ici, si une autre valeur de case est vide). Dan ce cas, le total n'est pas visible dans ta feuille Excel.
Code :
1
2
3
4
 
If Range("B2").value = "" then
    Total = 0
End if
Cocotte278 est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h46.


 
 
 
 
Partenaires

Hébergement Web