Bonjour ,
Je vous expose mon " problème " en espérant que quelqu'un puissent m'aider !
Voilà je souhaite créer un programme VBA excel afin qu'il effectue ce qui suit de manière automatique :
1 - On commence par donner le nom de la feuille sur laquelle il va s’exécuter
2 - la colonne qui contient les nom
3- la colonne qui contient les prix
3 - la ligne où il va commencer ( dans la colonne des nom )
( jusqu'ici cava je m'en sort )
Une fois ces paramètres entrer il va commencer à comparer le contenu de la cellule designer ( String ) avec le contenu de la cellule qui suit sur la même colonne 2 ème ligne si le contenue est le même il continue sinon il insère une nouvelle ligne en dessous d'elle ou il va pouvoir faire la somme de la colonne des prix pour ceux qui ont le meme nom puis le mettre en gras !
Je ne suis pas très habitué a VB mais le contenu que j'ai pu trouver dans le site m'a grandement aider a me familiariser avec ce langage ( merci)
Desolé si ce n'est pas très clair ! je joindrais un exemple de feuille avant execution et après execution ( que je ferais manuellement ) pour avoir une meilleur idée de ce que le programme est censé faire
Voilà où j'en suis avec le code :
C'est pas tres propre je sais
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
39
40
41
42
43 Sub For_Each_Next_Colonne() Dim FL1 As Worksheet, Cell As Range, NoCol1 As Integer, NumLin As Integer Dim DerLig As Long, Plage As Range Dim Nom_feuille As String Dim Var1, adres As String, NoLig As Long, NoCol As Integer Nom_feuille = InputBox("Veuillez entrer le nom de la feuille ") Set FL1 = Worksheets(Nom_feuille) NoCol1 = InputBox("Veuillez entrer numero de la colonne qui contient les montants ") NumLin = InputBox("Veuillez entrer numero de la premiere ligne qui contient les montants ") DerLig = Split(FL1.UsedRange.Address, "$")(4) 'où FL1.Range(FL1.Cells(1, NoCol1), FL1.Cells(Derlig, NoCol2)) détermine 'la plage de cellules à lire With FL1 Set Plage = Range(FL1.Cells(NumLin, NoCol1), FL1.Cells(DerLig, NoCol1)) 'Utilisation de l'objet range (Cell) dans une boucle For Each... Next For Each Cell In Plage '*** Récupération des valeurs de plusieurs cellule *** 'Valeur de la cellule lue Var1 = Cell.Value If (Var1 = Cell.Offset(1, 0)) Then MsgBox ("Ok") Else MsgBox ("KO") 'je test juste si la condition marche ^^ End If adres = Cell.Address NoLig = Cell.Row NoCol = Cell.Column Debug.Print adres & " " & NoLig & " " & NoCol & " " Debug.Print Var1 & " " & Var2 & " " & Var3 Next End With Set FL1 = Nothing Set Plage = Nothing End Submais je debute avec VB et j'ai besoin de quelque points pour valider mon semestre
Merci d'avance ^^
Partager