Avec VISUAL BASIC créer un tableau
Fermé
benny
-
18 mars 2009 à 14:26
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 19 mars 2009 à 10:06
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 19 mars 2009 à 10:06
A voir également:
- Avec VISUAL BASIC créer un tableau
- Créer un compte google - Guide
- Tableau croisé dynamique - Guide
- Créer un compte gmail - Guide
- Comment créer un groupe whatsapp - Guide
- Visual basic - Télécharger - Langages
8 réponses
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
18 mars 2009 à 14:59
18 mars 2009 à 14:59
bonjour,
beh à première vue y à pas photo
Tu vide la feuille
Worksheets("brouillon").Range("D2:E1000").Value = 0
lignea = 2
ligneb = lignea
lignec = 2
pasvide = True
ensuite tu veux savoir ce qu'il y a dedans
test = Worksheets("brouillon").Cells(lignea, 1).Value
mais bien sûr c'est zéro puisque 3 ligne plus haut tu met tout à zéro ????
Alors ?? j'ai rien compris
A+
beh à première vue y à pas photo
Tu vide la feuille
Worksheets("brouillon").Range("D2:E1000").Value = 0
lignea = 2
ligneb = lignea
lignec = 2
pasvide = True
ensuite tu veux savoir ce qu'il y a dedans
test = Worksheets("brouillon").Cells(lignea, 1).Value
mais bien sûr c'est zéro puisque 3 ligne plus haut tu met tout à zéro ????
Alors ?? j'ai rien compris
A+
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
18 mars 2009 à 15:19
18 mars 2009 à 15:19
Bonjour,
Je ne comprends pas non plus pourquoi enlever les doublons s'il faut faire un comptage ??? ou alors j'ai pas tout bien compris ... :o|
Sinon voilà un exemple qui permet de compter les pannes par lieux et les pannes par type de pannes
;o)
EDIT: J'ai apporté des corrections.
Je ne comprends pas non plus pourquoi enlever les doublons s'il faut faire un comptage ??? ou alors j'ai pas tout bien compris ... :o|
Sinon voilà un exemple qui permet de compter les pannes par lieux et les pannes par type de pannes
Option Explicit Private tabLieux() Private TabPanne() Private indLieux As Long Private indPanne As Long Sub main() indLieux = 0 indPanne = 0 initTableau comptePanneParLieu compteTypedePanneparPanne End Sub Public Sub initTableau() Dim ws As Worksheet Dim lig As Long Set ws = Worksheets(1) lig = 2 ReDim tabLieux(indLieux) With ws While .Range("A" & lig).Value <> "" If doesExist(.Range("A" & lig).Value, tabLieux) = False Then ReDim Preserve tabLieux(indLieux) tabLieux(indLieux) = .Range("A" & lig).Value indLieux = indLieux + 1 End If lig = lig + 1 Wend lig = 2 ReDim TabPanne(indPanne) While .Range("B" & lig).Value <> "" If doesExist(.Range("B" & lig).Value, TabPanne) = False Then ReDim Preserve TabPanne(indPanne) TabPanne(indPanne) = .Range("B" & lig).Value indPanne = indPanne + 1 End If lig = lig + 1 Wend End With End Sub Private Sub comptePanneParLieu() Dim ws1 As Worksheet Dim ws2 As Worksheet Dim lig1 As Long Dim lig2 As Long Dim i As Long Dim cpt As Long Set ws1 = Worksheets(1) Set ws2 = Worksheets(2) lig2 = 2 With ws1 For i = LBound(tabLieux()) To UBound(tabLieux()) cpt = 0 lig1 = 2 While .Range("A" & lig1).Value <> "" If .Range("A" & lig1).Value = tabLieux(i) Then cpt = cpt + 1 End If lig1 = lig1 + 1 Wend ws2.Range("A" & lig2).Value = tabLieux(i) ws2.Range("B" & lig2).Value = cpt lig2 = lig2 + 1 Next i End With End Sub Private Sub compteTypedePanneparPanne() Dim ws1 As Worksheet Dim ws2 As Worksheet Dim lig1 As Long Dim lig2 As Long Dim i As Long Dim cpt As Long Set ws1 = Worksheets(1) Set ws2 = Worksheets(2) lig2 = 2 With ws1 For i = LBound(TabPanne()) To UBound(TabPanne()) cpt = 0 lig1 = 2 While .Range("B" & lig1).Value <> "" If .Range("B" & lig1).Value = TabPanne(i) Then cpt = cpt + 1 End If lig1 = lig1 + 1 Wend ws2.Range("D" & lig2).Value = TabPanne(i) ws2.Range("E" & lig2).Value = cpt lig2 = lig2 + 1 Next i End With End Sub Private Function doesExist(ByVal str As Variant, ByRef tbl()) As Boolean Dim i As Long For i = LBound(tbl()) To UBound(tbl()) If tbl(i) = str Then doesExist = True Exit Function End If Next i doesExist = False End Function
;o)
EDIT: J'ai apporté des corrections.
merci Polux31 mais il me di k'il ya pliein de "beug" (que 'ai esseiller de rectifier avec pas trop de succè)
pour se qui non pas compris
sur une page appellé brouillon
j'ai une première colonne avec les lieu des pannes (A) avec 1 nombre indéfini de lieu
j'ai une deuxième colonne avec les différente pannes (B) celon les lieus
a partir de sa je souhait sortir 1 tableau ki me donnera le nombre de panne par lieu
par exempl sur la ligne (sur la ligne 1 é a partir de la colonne E) je vais mettre les différentes pannes (pour sela jutilise le système des doublons)
ensuite je vais mettre les différent lieu(toujour le système des doublons) sur une colonne (a partir de la ligne 2 et la colonne E)
et la vien mon problème (ki me prend la tète depuis hier midi) je veu compter le nombre de pannes par lieu é l'écrire dans mon tableau.
voila si je pouvais avoir un petit coup de pouce sa marrangerè bien merci d'avance
pour se qui non pas compris
sur une page appellé brouillon
j'ai une première colonne avec les lieu des pannes (A) avec 1 nombre indéfini de lieu
j'ai une deuxième colonne avec les différente pannes (B) celon les lieus
a partir de sa je souhait sortir 1 tableau ki me donnera le nombre de panne par lieu
par exempl sur la ligne (sur la ligne 1 é a partir de la colonne E) je vais mettre les différentes pannes (pour sela jutilise le système des doublons)
ensuite je vais mettre les différent lieu(toujour le système des doublons) sur une colonne (a partir de la ligne 2 et la colonne E)
et la vien mon problème (ki me prend la tète depuis hier midi) je veu compter le nombre de pannes par lieu é l'écrire dans mon tableau.
voila si je pouvais avoir un petit coup de pouce sa marrangerè bien merci d'avance
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
19 mars 2009 à 09:30
19 mars 2009 à 09:30
Bonjour,
As-tu remarqué que j'avais apporté des corrections. Il suffit d'adapter à ton fichier (le nom des feuilles, les colonnes etc...). Ca fonctionne très bien chez moi.
As-tu remarqué que j'avais apporté des corrections. Il suffit d'adapter à ton fichier (le nom des feuilles, les colonnes etc...). Ca fonctionne très bien chez moi.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 248
19 mars 2009 à 09:34
19 mars 2009 à 09:34
Bonjour,
Tu veux absolument le faire en vba ?
Sinon tu le tableau croisé dynamique (TCD) dans le menu données qui est prévu pour...
# Cliquer dans la base
# Données/Rapport de tableau croisé
# Cliquer sur Disposition
# Lieux en ligne, nbPannes en colonne, nbPannes dans données
# Double-clic sur nbPannes , puis Somme
et si tu veux approfondir les TCD : http://boisgontierjacques.free.fr/
eric
Tu veux absolument le faire en vba ?
Sinon tu le tableau croisé dynamique (TCD) dans le menu données qui est prévu pour...
# Cliquer dans la base
# Données/Rapport de tableau croisé
# Cliquer sur Disposition
# Lieux en ligne, nbPannes en colonne, nbPannes dans données
# Double-clic sur nbPannes , puis Somme
et si tu veux approfondir les TCD : http://boisgontierjacques.free.fr/
eric
pour POLUX31: oui je pense que la majeur parite des beugs vien de l'adaptation mais il y'a certainne chose que je n'arrive pas à adapter comme
Private tabLieux()
Private TabPanne()
Private indLieux As Long
Private indPanne As Long
j'arrive pa a voir a quoi cela correspond.
pour eriiic: je veux ke celase face automtiquement donc sé pa super. mais j'ai utilisé ton idé pour enregistrer une macro mé s'est pa super
je continue a chercher é si quelqu'un a une idé k'il n'ézite pas merci d'avance
Private tabLieux()
Private TabPanne()
Private indLieux As Long
Private indPanne As Long
j'arrive pa a voir a quoi cela correspond.
pour eriiic: je veux ke celase face automtiquement donc sé pa super. mais j'ai utilisé ton idé pour enregistrer une macro mé s'est pa super
je continue a chercher é si quelqu'un a une idé k'il n'ézite pas merci d'avance
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 248
19 mars 2009 à 10:03
19 mars 2009 à 10:03
re,
c'était pas super car il fallait seulement Lieux en ligne et nbPannes dans données (pas nbPannes en colonne)
Et si tu rajoutes/modifies les données il faut 'actualiser les données' avec le ! rouge
http://www.cijoint.fr/cjlink.php?file=cj200903/cijjaseSzP.xls
eric
c'était pas super car il fallait seulement Lieux en ligne et nbPannes dans données (pas nbPannes en colonne)
Et si tu rajoutes/modifies les données il faut 'actualiser les données' avec le ! rouge
http://www.cijoint.fr/cjlink.php?file=cj200903/cijjaseSzP.xls
eric
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
19 mars 2009 à 10:06
19 mars 2009 à 10:06
Private tabLieux() et Private TabPanne() sont, ce que l'on appelle des tableaux. Dans tabLieux on stocke les lieux, en passant pas la fonction doesExist(), on évite les doublons. Idem pour tabPanne qui stocke les pannes.
indLieux et indPanne sont des index utilisés pour allouer un élément en mémoire à chaque tableau.
Ensuite, la procédure comptePanneParLieu() compte combien de fois on trouve chaque élément du tableau tabLieux dans la colonne A, ce qui me donne le nombre de panne par lieu.
La procédure compteTypedePanneparPanne() compte de fois on trouve chaque élément du tableau tabPanne dans la colonne B, ce qui me donne le nombre de panne par type de panne.
Le résultat s'affiche dans l'onglet 2 du classeur.
indLieux et indPanne sont des index utilisés pour allouer un élément en mémoire à chaque tableau.
Ensuite, la procédure comptePanneParLieu() compte combien de fois on trouve chaque élément du tableau tabLieux dans la colonne A, ce qui me donne le nombre de panne par lieu.
La procédure compteTypedePanneparPanne() compte de fois on trouve chaque élément du tableau tabPanne dans la colonne B, ce qui me donne le nombre de panne par type de panne.
Le résultat s'affiche dans l'onglet 2 du classeur.