A voir également:
- Avec VISUAL BASIC créer un tableau
- Créer un compte google - Guide
- Comment créer un groupe whatsapp - Guide
- Tableau word - Guide
- Visual basic - Télécharger - Langages
- Créer un lien pour partager des photos - Guide
8 réponses
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+
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
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
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
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
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.