IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Récupérer numéros de ligne excel [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Janvier 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2018
    Messages : 14
    Par défaut Récupérer numéros de ligne excel
    Bonjour à tous,

    Je souhaite réaliser une fonction sur mon fichier excel qui me sélectionne plusieurs lignes de ma base données selon 1 critère, que chacune des lignes soit renseignée tour à tour dans un formulaire qui lui s'imprime alors pour finir- 1 formulaire l'un après l'autre. J'ai commencé à rédiger un code mais je rencontre des difficultés.

    - Ma base de données

    Pièce jointe 341557

    Chaque case renseignée est un lien avec un autre fichier où l'on procède à la saisie manuelle des informations. Je souhaite trier ma base de données selon le critère de la 2ième colonne "Etat:" et afficher seulement les cases vides. Je souhaite ensuite copier une à une les lignes d'informations, puis coller tour à tour les valeurs dans une autre feuille de mon classeur dans une ligne choisie arbitrairement dont les cellules sont liées à mon formulaire suivant que je souhaite par la suite imprimer automatiquement:

    Pièce jointe 341567

    Dans mon code, je rencontre la difficulté suivante :

    Une fois ma base de données triée selon le critère choisi, je compte le nombre de ligne non vide pour effectuer ma boucle. Je souhaite alors copier/coller une à une les lignes contenant de l'information mais je ne sais pas comment récupérer le bon indice de ligne qui me permettra de copier la bonne ligne pour la coller ensuite. C'est à dire les numéros de lignes excel associés à mes lignes voulues. De plus, selon le filtre les numéros de lignes ne se suivent pas ce qui rajoute une difficulté pour ma boucle.

    J'espère avoir été assez clair pour expliquer ma difficulté.

    - Mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    Sub IMPRESSION_DEMANDES_EN_ATTENTE()
    
    Dim i As Integer, derniere_ligne As Integer
    
     With Worksheets("P.MICHAUD")
        .Activate
        .Unprotect Password:="LEAN"
        On Error Resume Next
        .ShowAllData
        On Error GoTo 0
    
        .Range("$A$1:$U$2266").AutoFilter Field:=2, Criteria1:="=" 'filtre  -> case vide
        
    derniere_ligne = Worksheets("P.MICHAUD").Range("A" & Rows.Count).End(xlUp).Row 'Compte nombre de ligne non vide
    
        For i = 2 To derniere_ligne 'Mauvais indices choisis
        
        Set rngSource = Worksheets("P.MICHAUD").Range("F" & i & ":S" & i) 'copie la ligne d'information voulue
      
        With Worksheets("FORMULAIRE")
         
         .Range("AH1").Resize(1, rngSource.Count).Value = rngSource.Value 'colle la ligne pour remplissage automatique du formulaire
    
         .Range("B1:K32").Select
        Application.PrintCommunication = False
        With ActiveSheet.PageSetup
        .PrintTitleRows = ""
            .PrintTitleColumns = ""
        End With
        Application.PrintCommunication = True
        ActiveSheet.PageSetup.PrintArea = ""
        Application.PrintCommunication = False
        With ActiveSheet.PageSetup
            .LeftHeader = ""
            .CenterHeader = ""
            .RightHeader = ""
            .LeftFooter = ""
            .CenterFooter = ""
            .RightFooter = ""
            .LeftMargin = Application.InchesToPoints(0.7)
            .RightMargin = Application.InchesToPoints(0.7)
            .TopMargin = Application.InchesToPoints(0.75)
            .BottomMargin = Application.InchesToPoints(0.75)
            .HeaderMargin = Application.InchesToPoints(0.3)
            .FooterMargin = Application.InchesToPoints(0.3)
            .PrintHeadings = False
            .PrintGridlines = False
            .PrintComments = xlPrintNoComments
            .PrintQuality = 600
            .CenterHorizontally = False
            .CenterVertically = False
            .Orientation = xlLandscape
            .Draft = False
            .PaperSize = xlPaperA4
            .FirstPageNumber = xlAutomatic
            .Order = xlDownThenOver
            .BlackAndWhite = False
            .Zoom = False
            .FitToPagesWide = 1
            .FitToPagesTall = False
            .PrintErrors = xlPrintErrorsDisplayed
            .OddAndEvenPagesHeaderFooter = False
            .DifferentFirstPageHeaderFooter = False
            .ScaleWithDocHeaderFooter = True
            .AlignMarginsHeaderFooter = True
            .EvenPage.LeftHeader.Text = ""
            .EvenPage.CenterHeader.Text = ""
            .EvenPage.RightHeader.Text = ""
            .EvenPage.LeftFooter.Text = ""
            .EvenPage.CenterFooter.Text = ""
            .EvenPage.RightFooter.Text = ""
            .FirstPage.LeftHeader.Text = ""
            .FirstPage.CenterHeader.Text = ""
            .FirstPage.RightHeader.Text = ""
            .FirstPage.LeftFooter.Text = ""
            .FirstPage.CenterFooter.Text = ""
            .FirstPage.RightFooter.Text = ""
        End With
        Application.PrintCommunication = True
        Selection.PrintOut Copies:=1, Collate:=True
         
        End With
         
        Next
        
    End With
      
      
    
    End Sub

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2010
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 194
    Par défaut
    Bonjour,

    beaucoup d'infos et oui ce n'est pas très clair

    Donc il va te falloir décomposer un peu.

    Pour commencer je pense avoir compris que tu souhaites travailler sur un tableau filtré et donc sur les cellules visibles

    voila donc un petit bout de code pour demo

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Demo1()
    Dim Montableau As Range, MontableauFiltre As Range
        With Worksheets("Base de données") ' la feuille qui contient le tableau
            Set Montableau = .Range("A3:C6") ' la plage du tableau
        End With
     
            Montableau.AutoFilter Field:=1, Criteria1:="Mon Critère De Trie" 'le filtre utile pour la demo...
            'une fois les données filtrées on vas récupérer ce qui en reste de visible
            ' grâce à la ligne qui suit et tout mettre dans une variable
            Set MontableauFiltre = Montableau.SpecialCells(xlCellTypeVisible) 
            'on peut maintenant ne travailler que sur ce qui est visible
            'Exemple :
            Msgbox "le nombre de lignes visibles est : " & MontableauFiltre.Rows.Count
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] Récupération numéro de ligne Excel
    Par renard700 dans le forum VBA Access
    Réponses: 2
    Dernier message: 15/07/2012, 07h44
  2. Récupérer numéro de ligne d'un datagridview
    Par Filou67 dans le forum VB.NET
    Réponses: 1
    Dernier message: 12/05/2008, 20h26
  3. Récupérer le numéro de ligne d'une feuille excel dans un listbox
    Par Dream Master dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/06/2007, 09h16
  4. Définir le numéro de ligne d'un spreadsheet sur Excel
    Par delamarque dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 06/02/2006, 09h35
  5. Fonction excel: trouvé un numéro de ligne
    Par Nanid dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 28/09/2005, 14h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo