Calcul avec conditions sous VBexcel
Résolu/Fermé
goomis95
Messages postés
39
Date d'inscription
mardi 3 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2009
-
12 nov. 2009 à 13:54
goomis95 Messages postés 39 Date d'inscription mardi 3 novembre 2009 Statut Membre Dernière intervention 3 décembre 2009 - 12 nov. 2009 à 16:13
goomis95 Messages postés 39 Date d'inscription mardi 3 novembre 2009 Statut Membre Dernière intervention 3 décembre 2009 - 12 nov. 2009 à 16:13
A voir également:
- Calcul avec conditions sous VBexcel
- Calcul moyenne excel - Guide
- Calcul charpente bois gratuit - Télécharger - Architecture & Déco
- Logiciel gratuit calcul valeur nutritionnelle - Télécharger - Santé & Bien-être
- Logiciel calcul surface terrain gratuit - Télécharger - Outils professionnels
- Votre compte a été désactivé pour violation de nos conditions d’utilisation - Guide
1 réponse
goomis95
Messages postés
39
Date d'inscription
mardi 3 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2009
12 nov. 2009 à 16:13
12 nov. 2009 à 16:13
Je met le script que j'ai reçu de michel_m modifié et commenter pour afficher dans un tableau des données d'une feuille "x" sur une feuille "y" ( la où il y a le bouton associé à la macro ) cela donnera peut être des idées à certain.
Je sais qu'il y a des commentaires inutiles mais c'est pour les autres informaticiens voulant reprendre des macros et qui ne connaissent pas forcément le VBA :).
Option Explicit
'Déclaration de variables constantes réutilisées par la suite sans avoir à les déclarés et pouvant être utilisées plusieurs fois
Const colonne_user As Byte = 10
Sub nettoyerSordi()
'On rentre dans la feuille requete de vue et à partir de la case resultatuser (ici A15)
'la fonction va effacer les données sur 5 lignes et colonne_user colonne(variable ici égale à 10 défini ci-dessus en constante (const) )
Sheets("requete de vue").Range("resultatuser").Resize(5, coluser).Clear
End Sub
Sub Sordi()
'L'une des 4 fonctions avec Slogiciel, SRlogiciel et Sperif pour regarder des données en fonction d'une condition via la feuille requete de vue
'La seule fonction sur les 4 détaillée par des commentaires et la mise en forme
'Déclaration des variables de la fonction
Dim valeur
Dim comparaison As Byte
Dim tablo
Dim ligne As Byte, compteur_y As Byte, compteur_x As Byte
'Donne à la variable valeur, la valeur de la case case_user (ici F2)
valeur = Range("case_user")
'Si la variable valeur est vide alors
If IsEmpty(valeur) Then
'Message d'erreur indiquant la marche à suivre
MsgBox "Veuillez choisir le nom de la personne ( 1ère lettre du prénom suivi du nom de famille ) pour que la requête fonctionne", vbCritical
'Quitte la fonction
Exit Sub
'Fin Si
End If
'Avec la feuille recherche_ordi
With Sheets("recherche_ordi")
'On donne à la variable comparaison la valeur du nombre de fois où on retrouve la variable valeur dans la colonne 1
comparaison = Application.CountIf(.Columns(1), valeur)
'On redimensionne le tableau avec en ligne le nombre obtenu avec la variable comparaison et en colonne la variable colonne_user
ReDim tablo(comparaison - 1, colonne_user - 1)
'Initialisation de la variable ligne à 0
ligne = 1
'Pour le compteur_y allant de 0 à la valeur du tableau (
For compteur_y = 0 To UBound(tablo)
'La variable ligne est égale à la ligne ou la variable valeur est correcte et s'auto incrémente par la suite
ligne = .Columns(1).Find(valeur, .Cells(ligne, 1), xlValues).Row
'Pour le compteur_x allant de 0 à la varaible colonne_user
For compteur_x = 0 To colonne_user - 1
'Les valeurs du tableau de compteur_y et compteur_y sont égal aux cellules avec les variables ligne et compteur_x incrémenté de 1
tablo(compteur_y, compteur_x) = .Cells(ligne, compteur_x + 1)
Next
Next
End With
'Nettoyage de la feuille avec la fonction nettoyerSordi appellé directement pour effacer les données automatiquement si cela n'a pas été fait avant
nettoyerSordi
'Fige le défilement de l'écran
Application.ScreenUpdating = False
'On rentre dans la feuille requete de vue
Sheets("requete de vue").Activate
'Avec la cellule resultatuser, on dimensionne en partant de la cellule la taille du tableau
With Range("resultatuser").Resize(comparaison, colonne_user)
'Donne les valeurs récolté dans le tableau
.Value = tablo
'Encadre le tableau
.Borders.Weight = xlThin
End With
End Sub
Voiloo A+ et merci d'avance
Je sais qu'il y a des commentaires inutiles mais c'est pour les autres informaticiens voulant reprendre des macros et qui ne connaissent pas forcément le VBA :).
Option Explicit
'Déclaration de variables constantes réutilisées par la suite sans avoir à les déclarés et pouvant être utilisées plusieurs fois
Const colonne_user As Byte = 10
Sub nettoyerSordi()
'On rentre dans la feuille requete de vue et à partir de la case resultatuser (ici A15)
'la fonction va effacer les données sur 5 lignes et colonne_user colonne(variable ici égale à 10 défini ci-dessus en constante (const) )
Sheets("requete de vue").Range("resultatuser").Resize(5, coluser).Clear
End Sub
Sub Sordi()
'L'une des 4 fonctions avec Slogiciel, SRlogiciel et Sperif pour regarder des données en fonction d'une condition via la feuille requete de vue
'La seule fonction sur les 4 détaillée par des commentaires et la mise en forme
'Déclaration des variables de la fonction
Dim valeur
Dim comparaison As Byte
Dim tablo
Dim ligne As Byte, compteur_y As Byte, compteur_x As Byte
'Donne à la variable valeur, la valeur de la case case_user (ici F2)
valeur = Range("case_user")
'Si la variable valeur est vide alors
If IsEmpty(valeur) Then
'Message d'erreur indiquant la marche à suivre
MsgBox "Veuillez choisir le nom de la personne ( 1ère lettre du prénom suivi du nom de famille ) pour que la requête fonctionne", vbCritical
'Quitte la fonction
Exit Sub
'Fin Si
End If
'Avec la feuille recherche_ordi
With Sheets("recherche_ordi")
'On donne à la variable comparaison la valeur du nombre de fois où on retrouve la variable valeur dans la colonne 1
comparaison = Application.CountIf(.Columns(1), valeur)
'On redimensionne le tableau avec en ligne le nombre obtenu avec la variable comparaison et en colonne la variable colonne_user
ReDim tablo(comparaison - 1, colonne_user - 1)
'Initialisation de la variable ligne à 0
ligne = 1
'Pour le compteur_y allant de 0 à la valeur du tableau (
For compteur_y = 0 To UBound(tablo)
'La variable ligne est égale à la ligne ou la variable valeur est correcte et s'auto incrémente par la suite
ligne = .Columns(1).Find(valeur, .Cells(ligne, 1), xlValues).Row
'Pour le compteur_x allant de 0 à la varaible colonne_user
For compteur_x = 0 To colonne_user - 1
'Les valeurs du tableau de compteur_y et compteur_y sont égal aux cellules avec les variables ligne et compteur_x incrémenté de 1
tablo(compteur_y, compteur_x) = .Cells(ligne, compteur_x + 1)
Next
Next
End With
'Nettoyage de la feuille avec la fonction nettoyerSordi appellé directement pour effacer les données automatiquement si cela n'a pas été fait avant
nettoyerSordi
'Fige le défilement de l'écran
Application.ScreenUpdating = False
'On rentre dans la feuille requete de vue
Sheets("requete de vue").Activate
'Avec la cellule resultatuser, on dimensionne en partant de la cellule la taille du tableau
With Range("resultatuser").Resize(comparaison, colonne_user)
'Donne les valeurs récolté dans le tableau
.Value = tablo
'Encadre le tableau
.Borders.Weight = xlThin
End With
End Sub
Voiloo A+ et merci d'avance