Besoin d'aide VBA
Fermé
marxia
-
13 févr. 2009 à 11:44
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 19 févr. 2009 à 09:05
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 19 févr. 2009 à 09:05
A voir également:
- Besoin d'aide VBA
- Erreur 1004 vba ✓ - Forum VB / VBA
- Vba attendre 1 seconde ✓ - Forum VB / VBA
- Vba dernière colonne non vide ✓ - Forum VB / VBA
- Récupérer valeur cellule vba ✓ - Forum VB / VBA
- Mkdir vba ✓ - Forum VB / VBA
15 réponses
xav3601
Messages postés
3288
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
2 mars 2016
311
13 févr. 2009 à 11:52
13 févr. 2009 à 11:52
Tu es oblige de le faire par macro vba?
pk tu peux le faire tout simplement avec Excel!
pk tu peux le faire tout simplement avec Excel!
C'est un travail qu'on ma donné à faire et ils veulent appuyer sur un bouton et que tt se fasse automatiquement
lermite222
Messages postés
8702
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
13 févr. 2009 à 12:08
13 févr. 2009 à 12:08
Bonjour,
Il y a moyen de le faire automatiquement SANS bouton, sans rien, juste avec une MFC
A+
Il y a moyen de le faire automatiquement SANS bouton, sans rien, juste avec une MFC
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lermite222
Messages postés
8702
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
13 févr. 2009 à 13:17
13 févr. 2009 à 13:17
MFC = Mise en forme conditionelle
Tu sélectionne la colonne 3
>> Format >> Mise en forme conditionelle >> tu sélectionne >> la cellule est égale >> et tu met 0
Colonne 5
>> Tu sélectionne N'est pas comprise et tu tape tes bornes
Pour la 1, je retrouve plus comment incorporer la fonction ESTNUM().. Peut-être wilfried ?
A+
Tu sélectionne la colonne 3
>> Format >> Mise en forme conditionelle >> tu sélectionne >> la cellule est égale >> et tu met 0
Colonne 5
>> Tu sélectionne N'est pas comprise et tu tape tes bornes
Pour la 1, je retrouve plus comment incorporer la fonction ESTNUM().. Peut-être wilfried ?
A+
wilfried_42
Messages postés
907
Date d'inscription
mardi 19 août 2008
Statut
Contributeur
Dernière intervention
8 décembre 2009
243
13 févr. 2009 à 13:29
13 févr. 2009 à 13:29
Bonjour à tous
Selectionner la plage A2:A20 de la 1ere colonne
Menu Format / Mises en Forme Conditionnelle
Choisir : La formule est
la Formule : =Non(EstNum(A2))
cliquer le bouton format pour choisir le format des cellule à appliquer
pour la 3eme colonne
meme manip
s'il y a des formules dans les cellules mettre la formule suivante
=C2=""
si ce sont des cellules saisies mettre la formule suivante
=EstVide(C2)
pour la 4eme colonne selon in interval : probleme ou se trouvent les données
exemple : borne inferieure : en cellule A1, Borne superieure : en cellule B1
meme manip
la formule : =et(D2>=$A$1;D2<=$B$1)
si probleme : joindre un fichier : suivre ce lien : https://www.cjoint.com/ charger le fichier et poster le lien donné par le site dans le reponse
Selectionner la plage A2:A20 de la 1ere colonne
Menu Format / Mises en Forme Conditionnelle
Choisir : La formule est
la Formule : =Non(EstNum(A2))
cliquer le bouton format pour choisir le format des cellule à appliquer
pour la 3eme colonne
meme manip
s'il y a des formules dans les cellules mettre la formule suivante
=C2=""
si ce sont des cellules saisies mettre la formule suivante
=EstVide(C2)
pour la 4eme colonne selon in interval : probleme ou se trouvent les données
exemple : borne inferieure : en cellule A1, Borne superieure : en cellule B1
meme manip
la formule : =et(D2>=$A$1;D2<=$B$1)
si probleme : joindre un fichier : suivre ce lien : https://www.cjoint.com/ charger le fichier et poster le lien donné par le site dans le reponse
Merci beaucoup j'ai fait ce que vous m'avez dit et ca va super bien!
Parcontre j'ai de nouveaux macros à faire: j'ai une colonne avec une date et l'heure de la forme: 2009-02-15 00:00:00 et j'ai 3 autres colonnes avec l'année le mois et le jour et cela doit correspondre à la date de la colonne précedente. Je doit faire le macro afin de vérifier!
merci
Parcontre j'ai de nouveaux macros à faire: j'ai une colonne avec une date et l'heure de la forme: 2009-02-15 00:00:00 et j'ai 3 autres colonnes avec l'année le mois et le jour et cela doit correspondre à la date de la colonne précedente. Je doit faire le macro afin de vérifier!
merci
xav3601
Messages postés
3288
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
2 mars 2016
311
17 févr. 2009 à 07:48
17 févr. 2009 à 07:48
Tu prend le contenu de la premiere colonne et tu applique les fonctions Day Month et Year dessus et apres tu compare avec les cellules suivantes ;)
wilfried_42
Messages postés
907
Date d'inscription
mardi 19 août 2008
Statut
Contributeur
Dernière intervention
8 décembre 2009
243
17 févr. 2009 à 09:24
17 févr. 2009 à 09:24
Re:
exemple : ta date en colonne A, ton année en colonne B, ton mois en colonne C, ton jour en colonne D
tu appliques une mise en forme conditionnelle : Selection de la plage : Menu Format / Mise en Forme conditionnelle
dans la fenetre MFC, tu choisis la Formule est : et tu tapes à droite de ce choix
=Ou(annee($A2)<>$B2;Mois($A$2)<>$C2;Jour($A2)<>$D2)
click sur le bouton format et choisis un format d'affichage (exemple fond rouge)
tu valides
il aurait été plus simple de mettre des formules plutôt que de refaire saisir tout
en colonne B (selon enoncé ci-dessus), = annee($A2)
en colonne C =Mois($A2)
en colonne D = Jour($A2)
je ne sais pas pourquoi faire ces 3 colonnes, mais (là c'est à titre personnel) elle ne sont peut etre pas utiles
exemple : ta date en colonne A, ton année en colonne B, ton mois en colonne C, ton jour en colonne D
tu appliques une mise en forme conditionnelle : Selection de la plage : Menu Format / Mise en Forme conditionnelle
dans la fenetre MFC, tu choisis la Formule est : et tu tapes à droite de ce choix
=Ou(annee($A2)<>$B2;Mois($A$2)<>$C2;Jour($A2)<>$D2)
click sur le bouton format et choisis un format d'affichage (exemple fond rouge)
tu valides
il aurait été plus simple de mettre des formules plutôt que de refaire saisir tout
en colonne B (selon enoncé ci-dessus), = annee($A2)
en colonne C =Mois($A2)
en colonne D = Jour($A2)
je ne sais pas pourquoi faire ces 3 colonnes, mais (là c'est à titre personnel) elle ne sont peut etre pas utiles
j'ai un autre problème! j'ai fais une boucle avec plusieurs instructions mais en faisant un débeugage par étape je me suis rendu compte d'un probleme quand une condition est vérifiée la première fois, la deuxième fois c'est pareil même si il y une erreur et que c'est l'autre condition qui devrait être vérifiée. je sais pas si je me suis bien comprendre j'ai un peu de mal à m'expliquer. Voila mon code j'ai mis en remarque les contrôle que j'effectue. Dans une autre feuille je note tous les résultats (le nombre de celulle différent de 0, égal à 0...)
Sub Contrôle()
'initialisation des var
ligne = 2
listenul = 0
listenonnul = 0
cbprimaire = 0
cbsecondaire = 0
nul = 0
nonnul = 0
cmde = 0
cmdefaux = 0
nbcommande = 0
nbcommandefaux = 0
numnul = 0
numnonnul = 0
numbon = 0
numfaux = 0
Set cb = Worksheets("BDD").Cells(ligne, 1)
Set numlist = Worksheets("BDD").Cells(ligne, 9)
Set commande = Worksheets("BDD").Cells(ligne, 11)
Set lign = Worksheets("BDD").Cells(ligne, 12)
Set art = Worksheets("BDD").Cells(ligne, 17)
'boucle toutes les lignes
Do Until cb = 0
'controle du cb prim
If Left(cb, 1) = 1 Then
cbprimaire = cbprimaire + 1
Else
cbsecondaire = cbsecondaire + 1
End If
'controle du num liste
If numlist = 0 Then
listenul = listenul + 1
Else
listenonnul = listenonnul + 1
End If
'contrôle du numéro de commande
'différent de 0
If commande = 0 Then
nul = nul + 1
Else
nonnul = nonnul + 1
End If
'commence par un 8 ou un 9
If Left(commande, 1) = 8 Or 9 Then
cmde = cmde + 1
Else
cmdefaux = cmdefaux + 1
End If
'comporte 9 chiffres
If Len(commande) = 9 Then
nbcommande = nbcommande + 1
Else
nbcommandefaux = nbcommandefaux + 1
End If
'contrôle ligne
'différent de 0
If lign = 0 Then
numnul = numnul + 1
Else
numnonnul = numnonnul + 1
End If
'dernier chiffre=0
If Right(lign, 1) = 0 Then
numbon = numbon + 1
Else
numfaux = numfaux + 1
End If
'contrôle art_pf
'commence par H, B, A ou X
Set cb = Worksheets("BDD").Cells(ligne, 1)
ligne = ligne + 1
Loop
'résultats
Worksheets("résultats").Cells(1, 2) = ligne
Worksheets("résultats").Cells(2, 2) = cbprimaire
Worksheets("résultats").Cells(3, 2) = cbsecondaire
Worksheets("résultats").Cells(5, 2) = listenul
Worksheets("résultats").Cells(6, 2) = listenonnul
Worksheets("résultats").Cells(8, 2) = nul
Worksheets("résultats").Cells(9, 2) = nonnul
Worksheets("résultats").Cells(10, 2) = cmdefaux
Worksheets("résultats").Cells(11, 2) = cmde
Worksheets("résultats").Cells(12, 2) = nbcommandefaux
Worksheets("résultats").Cells(13, 2) = nbcommande
Worksheets("résultats").Cells(15, 2) = numnonnul
Worksheets("résultats").Cells(16, 2) = numnul
Worksheets("résultats").Cells(17, 2) = numbon
Worksheets("résultats").Cells(18, 2) = numfaux
End Sub
Sub Contrôle()
'initialisation des var
ligne = 2
listenul = 0
listenonnul = 0
cbprimaire = 0
cbsecondaire = 0
nul = 0
nonnul = 0
cmde = 0
cmdefaux = 0
nbcommande = 0
nbcommandefaux = 0
numnul = 0
numnonnul = 0
numbon = 0
numfaux = 0
Set cb = Worksheets("BDD").Cells(ligne, 1)
Set numlist = Worksheets("BDD").Cells(ligne, 9)
Set commande = Worksheets("BDD").Cells(ligne, 11)
Set lign = Worksheets("BDD").Cells(ligne, 12)
Set art = Worksheets("BDD").Cells(ligne, 17)
'boucle toutes les lignes
Do Until cb = 0
'controle du cb prim
If Left(cb, 1) = 1 Then
cbprimaire = cbprimaire + 1
Else
cbsecondaire = cbsecondaire + 1
End If
'controle du num liste
If numlist = 0 Then
listenul = listenul + 1
Else
listenonnul = listenonnul + 1
End If
'contrôle du numéro de commande
'différent de 0
If commande = 0 Then
nul = nul + 1
Else
nonnul = nonnul + 1
End If
'commence par un 8 ou un 9
If Left(commande, 1) = 8 Or 9 Then
cmde = cmde + 1
Else
cmdefaux = cmdefaux + 1
End If
'comporte 9 chiffres
If Len(commande) = 9 Then
nbcommande = nbcommande + 1
Else
nbcommandefaux = nbcommandefaux + 1
End If
'contrôle ligne
'différent de 0
If lign = 0 Then
numnul = numnul + 1
Else
numnonnul = numnonnul + 1
End If
'dernier chiffre=0
If Right(lign, 1) = 0 Then
numbon = numbon + 1
Else
numfaux = numfaux + 1
End If
'contrôle art_pf
'commence par H, B, A ou X
Set cb = Worksheets("BDD").Cells(ligne, 1)
ligne = ligne + 1
Loop
'résultats
Worksheets("résultats").Cells(1, 2) = ligne
Worksheets("résultats").Cells(2, 2) = cbprimaire
Worksheets("résultats").Cells(3, 2) = cbsecondaire
Worksheets("résultats").Cells(5, 2) = listenul
Worksheets("résultats").Cells(6, 2) = listenonnul
Worksheets("résultats").Cells(8, 2) = nul
Worksheets("résultats").Cells(9, 2) = nonnul
Worksheets("résultats").Cells(10, 2) = cmdefaux
Worksheets("résultats").Cells(11, 2) = cmde
Worksheets("résultats").Cells(12, 2) = nbcommandefaux
Worksheets("résultats").Cells(13, 2) = nbcommande
Worksheets("résultats").Cells(15, 2) = numnonnul
Worksheets("résultats").Cells(16, 2) = numnul
Worksheets("résultats").Cells(17, 2) = numbon
Worksheets("résultats").Cells(18, 2) = numfaux
End Sub
et j'ai une autre question: à la fin de ma boucle(qui ne marche toujours pas!) j'affiche un msgbox "contrôles terminés" et je veux que quand je clique sur ok , la feuille "résultat" s'ouvre. Et si j'ai pas été assez clair pr ma question du dessus n'hésitez pas à me le dire j'essayeré de le vous expliquer mieux ou de donner plus de détail!
lermite222
Messages postés
8702
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
18 févr. 2009 à 12:34
18 févr. 2009 à 12:34
Bonjour,
Je n'ai pas tout les renseignement mais une piste...
A+
Je n'ai pas tout les renseignement mais une piste...
Sub Contrôle() 'initialisation des var ligne = 2 'Quand arrive dans une sub, les variables SONT DEJA A ZERO 'listenul = 0 'listenonnul = 0 'cbprimaire = 0 'cbsecondaire = 0 'nul = 0 'nonnul = 0 'cmde = 0 'cmdefaux = 0 'nbcommande = 0 'nbcommandefaux = 0 'numnul = 0 'numnonnul = 0 'numbon = 0 'numfaux = 0 'boucle toutes les lignes Do Until cb = 0 With Worksheets("BDD") cb = .Cells(ligne, 1) numlist = .Cells(ligne, 9) commande = .Cells(ligne, 11) lign = .Cells(ligne, 12) art = .Cells(ligne, 17) End With 'controle du cb prim If Left(cb, 1) = 1 Then cbprimaire = cbprimaire + 1 Else cbsecondaire = cbsecondaire + 1 End If 'controle du num liste If numlist = 0 Then listenul = listenul + 1 Else listenonnul = listenonnul + 1 End If 'contrôle du numéro de commande 'différent de 0 If commande = 0 Then nul = nul + 1 Else nonnul = nonnul + 1 End If 'commence par un 8 ou un 9 'IL FAUT METTRE LA CONDITION 2 FOIS If Left(commande, 1) = 8 Or Left(commande, 1) = 9 Then cmde = cmde + 1 Else cmdefaux = cmdefaux + 1 End If 'comporte 9 chiffres If Len(commande) = 9 Then nbcommande = nbcommande + 1 Else nbcommandefaux = nbcommandefaux + 1 End If 'contrôle ligne 'différent de 0 If lign = 0 Then numnul = numnul + 1 Else numnonnul = numnonnul + 1 End If 'dernier chiffre=0 If Right(lign, 1) = 0 Then numbon = numbon + 1 Else numfaux = numfaux + 1 End If 'contrôle art_pf 'commence par H, B, A ou X ligne = ligne + 1 Loop 'résultats With Worksheets("résultats") .Cells(1, 2) = ligne .Cells(2, 2) = cbprimaire .Cells(3, 2) = cbsecondaire .Cells(5, 2) = listenul .Cells(6, 2) = listenonnul .Cells(8, 2) = nul .Cells(9, 2) = nonnul .Cells(10, 2) = cmdefaux .Cells(11, 2) = cmde .Cells(12, 2) = nbcommandefaux .Cells(13, 2) = nbcommande .Cells(15, 2) = numnonnul .Cells(16, 2) = numnul .Cells(17, 2) = numbon .Cells(18, 2) = numfaux .Select End With End Sub
A+
j'ai une autre question: à la fin de ma boucle j'affiche un msgbox "contrôles terminés" et je veux que quand je clique sur ok , la feuille "résultat" s'ouvre.
lermite222: merci pr ton aide ca marche!
lermite222: merci pr ton aide ca marche!
lermite222
Messages postés
8702
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
19 févr. 2009 à 09:05
19 févr. 2009 à 09:05
De la façon que j'ai fait, à la fin de la macros, la page Résultat est sélectionnée.
Clic sur OK après le msg et tu est dans la bonne feuille.
Clic sur OK après le msg et tu est dans la bonne feuille.