VBA/Macro

Résolu/Fermé
caillasse147 Messages postés 71 Date d'inscription lundi 26 décembre 2016 Statut Membre Dernière intervention 28 juin 2017 - 26 déc. 2016 à 09:01
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 27 déc. 2016 à 10:23
Bonjour à tous.

J'ai créé une macro sous Excel afin de faire tourner un fichier au boulot.

Or, le problème est que si je n'exécute pas cette dernière, ça ne tourne pas et lorsque je décide de l'exécuter ça fonctionne parfaitement mais par contre la macro ne tourne qu'une seule fois et même en changeant mes données de base, mes résultats restent figés.
Je ne sais pas si j'ai été clair, c'est pas évident et n'étant pas un pro d'Excel et surtout des VBA, j'aurais aimé savoir :

1) Comment faire tourner la macro automatiquement à chaque nouvelle entrée d'une valeur ?
2) Comment la faire tourner tout le temps sans avoir besoin de cliquer sur "exécuter" à chaque fois?

Ma macro actuelle est la suivante :


Sub Cellules_vides()
Dim cel As Range
For Each cel In Range("A10:A69")
If cel = "" Then
cel.EntireRow.Hidden = True
End If
Next
End Sub

Merci d'avance
A voir également:

7 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 689
26 déc. 2016 à 09:09
Bonjour,

Pour cela tu mets ton code dans une macro événementielle dans ta feuille
Private Sub Worksheet_Change(ByVal Target As Range)
' ton code
End Sub

0
caillasse147 Messages postés 71 Date d'inscription lundi 26 décembre 2016 Statut Membre Dernière intervention 28 juin 2017
26 déc. 2016 à 09:38
Merci de ta réponse mais ça ne fonctionne pas, rien n'a bougé
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 302
Modifié par michel_m le 26/12/2016 à 09:29
bonjour,

il faut faire pour ce que tu demandes
Comment faire tourner la macro automatiquement à chaque nouvelle entrée d'une valeur ?
utiliser une macro événementielle à écrire dans le module feuille de l'éditeur vba

dans ton cas c'est le changement de valeur à qui déclenche et si j'ai pigé en supprimant la valeur ?
si oui
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
'zone d'action:range A20:A69; target:cellule qui a changée
'si l 'intersection de target et de la zone n'est pas rien et si target est vide alors
If Not Intersect(Target, Range("A20:A69")) Is Nothing And IsEmpty(Target) Then Rows(Target.Row).Hidden = True
End If
End Sub





 Michel
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 302
26 déc. 2016 à 09:42
Caillasse, je sens le paté ?
0
caillasse147 Messages postés 71 Date d'inscription lundi 26 décembre 2016 Statut Membre Dernière intervention 28 juin 2017 > michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023
26 déc. 2016 à 09:46
Lol Non pourquoi?
0
caillasse147 Messages postés 71 Date d'inscription lundi 26 décembre 2016 Statut Membre Dernière intervention 28 juin 2017
26 déc. 2016 à 09:43
oui oui c'est exactement cela, or je n'ai pas compris comment saisir ton code ci-dessus,

Merci d'avance
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 302 > caillasse147 Messages postés 71 Date d'inscription lundi 26 décembre 2016 Statut Membre Dernière intervention 28 juin 2017
26 déc. 2016 à 09:46
Caillasse, je sens le paté ?

oui oui c'est exactement cela


merci
0
caillasse147 Messages postés 71 Date d'inscription lundi 26 décembre 2016 Statut Membre Dernière intervention 28 juin 2017
26 déc. 2016 à 10:37
Je n'ai pas réussi à trouver solution à mon problème,

Je pense que je n'écris pas mon code au bon endroit.....
0
Utilisateur anonyme
26 déc. 2016 à 10:54
 
Bonjour caillasse147, bonjour le forum,

Quand tu es sur ta feuille de calcul Excel, fais < Alt >< F11 > pour aller
sur Microsoft Visual Basic. À gauche, tu peux voir une ligne avec :
« VBAProject (nom de ton classeur) » ; dessous, il y a cette ligne :
« Microsoft Excel Objets » ; dessous encore, il y a la liste des feuilles
du classeur et ThisWorkbook ; clic sur Feuil1 ; < Entrée > : la page
blanche qui s'est ouverte est la feuille de code de Feuil1 : c'est là
que tu dois mettre la Sub Worksheet_Change(ByVal Target As Range).

Cordialement.  :)
 
0
caillasse147 Messages postés 71 Date d'inscription lundi 26 décembre 2016 Statut Membre Dernière intervention 28 juin 2017 > Utilisateur anonyme
26 déc. 2016 à 11:08
Bonjour,

C'est évidemment ce que je faisais mais le code ne change rien dans mon tableau, malheureusement...
0
Utilisateur anonyme > caillasse147 Messages postés 71 Date d'inscription lundi 26 décembre 2016 Statut Membre Dernière intervention 28 juin 2017
26 déc. 2016 à 11:15
Essaye avec : Private Sub Worksheet_SelectionChange(ByVal Target As Range)
au lieu de : Private Sub Worksheet_Change(ByVal Target As Range)
0
caillasse147 Messages postés 71 Date d'inscription lundi 26 décembre 2016 Statut Membre Dernière intervention 28 juin 2017
26 déc. 2016 à 11:17
Donc je met ça au début seulement et ensuite je mets mon code exactement comme je l'avais écrit au début on est d'accord?

Merci!!!!!
0
caillasse147 Messages postés 71 Date d'inscription lundi 26 décembre 2016 Statut Membre Dernière intervention 28 juin 2017
26 déc. 2016 à 11:21
Non ça change toujours rien
0
caillasse147 Messages postés 71 Date d'inscription lundi 26 décembre 2016 Statut Membre Dernière intervention 28 juin 2017
26 déc. 2016 à 11:30
J'ai essayé avec l'astuce de chacun d'entre vous et même la dernière, celle d'albkan et ça ne fonctionne pas je pense que je suis mal exprimé, c'est même certain.

En fait j'ai un onglet qui comprend 3 colonnes dont deux qui ne bougent jamais qui sont "expéditeurs" et "destinataire" et ensuite ma 3e colonne est celle ou je rentre mes volumes donc évidemment elle varie en fonction du chiffre ou nombre que je renseigne

Concernant le deuxième onglet, appelé "récapitulatif", j'ai mis en forme un tableur que je pourrai directement envoyer à mon client, avec une forme particulière et évidemment professionnelle.

Et justement c'est dans ce tableau que j'ai besoin de ma macro

J'ai déjà inclus des fonctions "si" pour lesquelles si un volume est renseigné dans le premier onglet alors les 3 colonnes s'affichent et s'il n'y a pas de renseignements rien ne s'affiche.

Jusque la tout va bien et tout fonctionne parfaitement.

Mais le problème c'est que évidemment les lignes vides apparaissent dans mon second onglet même quand je n'ai pas renseigné de volumes sur le premier onglet donc j'avais trouvé un code permettant de les effacer qui fonctionne très bien mais le soucis que je rencontre c'est que pour qu'il fonctionne il faut à chaque fois que j'aille sur "développeur" pour exécuter ma macro donc j'aimerais que ça se fasse automatiquement dans un premier temps et le deuxième problème c'est que lorsque je l'exécute et bien même en modifiant les volumes ça reste intact, et les nouvelles lignes n'apparaissent plus.
Donc en fait une fois l'exécution de la macro, si par inattention j'ai oublié un de mes volumes et que je dois le rajouter bah je suis "niqué" (désolé pour l'expression) car il ne se rajoute pas dans mon tableau final....

Je pense avoir été plus clair

Et merci à tous d'essayer d'éclaircir avec moi tout cela
0
Utilisateur anonyme
26 déc. 2016 à 11:38
Pour ton message #12, tu as essayé trop vite ! Tu aurais dû attendre ma réponse :
c'est le message #15.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 302
Modifié par michel_m le 26/12/2016 à 14:03
re Caillasse
mets ton classeur en pièce jointe la macro que je t'avais proposé avait été testé et fonctionnait donc en fonction de ce que tu demandais, effectivement, d'après tes derniers messages, tu t'étais mal exprimé
pour cela:
Mettre le classeur sans données confidentielles en pièce jointe sur « mon-partage.fr »
et faire un clic droit-coller le raccourci dans votre message


 Michel
0
caillasse147 Messages postés 71 Date d'inscription lundi 26 décembre 2016 Statut Membre Dernière intervention 28 juin 2017
27 déc. 2016 à 08:16
Bonjour à tous, mon problème est déjà résolu grâce à Michel et Albkan ici présents, ils ont fait un gros travail sur mon fichier et je les en remercie.

Je posterai ci-dessous les codes apportés par Michel qui ont pu m'aider à solutionner mon problème,

Merci encore à vous deux,

Bonne journée à tous,
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 302
Modifié par michel_m le 27/12/2016 à 11:06
erreur d'envoi, excusez moi


 Michel
0