• Initiateur de la discussion Initiateur de la discussion Vario29
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

V

Vario29

Guest
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$F$3" Then
champ = Target
n = Range(champ).CurrentRegion.Rows.Count
For i = 2 To Range(champ).Rows.Count
temoin = False
For c = 2 To Range(champ).Columns.Count
If Range(champ).Cells(i, c) <> 0 Then temoin = True
Next c
Rows(i + Range(champ).Row - 1).Hidden = Not temoin
Next i
ActiveSheet.PrintPreview
Cells.EntireRow.Hidden = False
End If
End Sub
Bonjour,

Pouvez-vous m'expliquer ce code afin de l'adapter à mon exemple,

Il permet d'imprimer certaines lignes ayant une information,

MErci
 
Re : Modification code

Bonjour Vario29 🙂,
Voici l'explication de ton code
Code:
Private Sub Worksheet_Change(ByVal Target As Range) ' Si la feuille change, renvoie Target, sélection active sur la feuille
If Target.Address = "$F$3" Then ' Vérifie que Target est F3
champ = Target ' Charge la sélection dans une variable champ, soit F3
n = Range(champ).CurrentRegion.Rows.Count ' n prends le nombre de lignes renseignées autour de F3
' Mais il ne sert à rien puisqu'il n'est pas utilisé après
For i = 2 To Range(champ).Rows.Count ' De 2 au nombre de lignes de champ (mais comme champ vaut F3, ça vaut 1)
temoin = False ' Variable booléenne passée à faux
For c = 2 To Range(champ).Columns.Count ' De 2 au nombre de colonnes de champ (mais comme champ vaut F3, ça vaut 1)
If Range(champ).Cells(i, c) <> 0 Then temoin = True 'Si la cellule est différente de 0, temoin passe à vrai
Next c ' c suivant
Rows(i + Range(champ).Row - 1).Hidden = Not temoin ' Cache la ligne si temoin est faux
Next i ' i suivant
ActiveSheet.PrintPreview ' Affiche un aperçu avant impression
Cells.EntireRow.Hidden = False ' Réaffiche les lignes
End If ' fin du test
End Sub
Mais à mon avis, il a besoin de corrections avant de te rendre les services que tu en attends...
Bonne après-midi 😎
 
Re : Modification code

Bonjour le fil, bonjour le forum,

JPN a été plus rapide mais puisque c'est fait, je t'envoie mon interprétation...

Code:
Private Sub Worksheet_Change(ByVal Target As Range) 'à chaque changement dans cet onglet
If Target.Address = "$F$3" Then 'condition 1 : si le changement a lieu dans la cellule F3
    champ = Target 'définit la variable champ (lui attribue la valeur contenue dans F3)
    'si champ a été déclaré comme String cela signifie que l'on a tapé une adresse dans F3 (par exempe "A12") et
    'dans ce cas Range(champ) devient la cellule A12
    n = Range(champ).CurrentRegion.Rows.Count 'définit la variable n
    'n est le nombre de lignes contenues dans la plage des cellules adjacentes à A12
   '(si on considère toujours l'exemple que "A12" a été édité dans F3)
    
    For i = 2 To Range(champ).Rows.Count 'boucle 1 : de 2 à ... ici il devrait plutôt y avoir n à la place de
    'Range(champ).Rows.Count... sinon la variable n définie au dessus ne sert à rien et
    'Range(champ).Rows.Count est toujours = à 1 donc problème car la boucle ne se fait pas???
        temoin = False 'définit la variable témoin (lui attribue la valeur false)...
        For c = 2 To Range(champ).Columns.Count 'boucle 2 : de 2 à ...
        'idem cette boucle se sera pas faite car Range(champ).Columns.Count
        'sera toujours = à 1 je pense qu'il faudrait plutôt For c = 2 To Range(champ).CurrentRegion.Columns.Count
            If Range(champ).Cells(i, c) <> 0 Then temoin = True 'condition : si la cellule n'est pas vide, temoin = vrai
        Next c 'prochaine valeur de la boucle 2
        Rows(i + Range(champ).Row - 1).Hidden = Not temoin 'affiche ou masque la ligne en fonction de la valeur de témoin
    Next i 'prochaine valeur de la boucle 1
    ActiveSheet.PrintPreview 'aperçu avant impression
    Cells.EntireRow.Hidden = False 'affiche toutes les lignes
End If 'fin de la condition 1
End Sub
 
Re : Modification code

Merci,

Je voulais utiliser ce code pour mon travail car tous les mois je dois imprimer des documents récapitulatifs de notre activité.

L’objectif était de donner des critères à l’impression. Ainsi j’ai déterminé des zones d’impressions avec la notion « zone-d-impression=Indirect() »

Je voulais que lors de l’impression, excel ignore les lignes à 0 afin de synthétiser le document. Ainsi je me basais sur la colonne G. Je n’imprime pas les lignes avec un 0 dans la colonne G.

Voilà, pourquoi j’essaye d’adapter ce code,

Tu as une idée pour m’aider ?

En tt cas merci,
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
15
Affichages
830
Réponses
7
Affichages
187
Réponses
5
Affichages
932
Réponses
8
Affichages
402
Retour