Copier coller à la dernière ligne tableau prise en compte toutes les cellule

a02halo

XLDnaute Nouveau
Bonjour à tous,

Je reviens vers vous avec plusieurs question :

Je travaille actuellement sur un petit outil permettant de réaliser des états des lieux.
J'ai réussi (avec un peu d'aide) à créer un outil qui parcourt tous les onglets (dans la démo il n'y en a qu'un mais il est censé en avoir a peu près 100) et si une cellule n'est pas vide dans certaines colonnes cela me remplit un tableau situé dans un onglet résumé.

Je rencontre maintenant plusieurs problèmes :
Dans ce tableau j'aimerais que si une cellule d'une ligne est remplie (qu'elle que soit la cellule) on passe à la ligne suivante. Pour l'instant on passe à la ligne suivante que si une cellule en particulier est remplie.

J'ai gêréla récupération d'information grâce à un Offset. Cependant certaines informations s'appliquent à des plages de données et je dois récupérer sur tous les onglets (ou la condition est remplie) la valeur d'une cellule fixe (B5). Je me retrouve après tous mes essais avec la cellule B5 de l'onglet de destination (et non l'onglet source)

Je vous copie colle le code VBA voir si vous pouvez me donner un coup de pouce :
Je vous joins également la version " démo " du classeur
En vous remerciant,

Code:
Sub Button1_Click()

Dim Sh As Worksheet
Dim DerLig As Long
Dim Cell As Range


For Each Sh In ThisWorkbook.Worksheets
    If Sh.Name <> "Plomberie" Then
        ' traitement de la feuille
' dernière ligne de la colonne G
DerLig = Sh.Cells(Sh.Rows.Count, 7).End(xlUp).Row
       
' pour chaque cellule de la colonne G
For Each Cell In Sh.Range("G17:G19")
    ' si la cellule n'est pas vide
    If Cell.Value <> "" Then
   
        ' feuille de destination
        With ThisWorkbook.Worksheets("Porte entree")
            ' on copie la valeur de la cellule A vers la feuille de destination
            ' (dans la première ligne non vide de la colonne A)
            .Cells(.Rows.Count, 1).End(xlUp)(2) = ActiveSheet.Range("B5")
            .Cells(.Rows.Count, 3).End(xlUp)(2) = Cell.Offset(0, -6)
        End With
    End If
 Next Cell
 
Set Sh = Nothing
        
    End If
Next Sh

End Sub


Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub
 

Pièces jointes

  • TEST_MATRICERECP EDL MATRICE RECP 4 JUIN.xlsm
    67.1 KB · Affichages: 36
Dernière édition:

a02halo

XLDnaute Nouveau
Re : Copier coller à la dernière ligne tableau prise en compte toutes les cellule

Alors pour ma première question (sélectionner la cellule B5) j'y suis parvenu en rajoutant une variable Num_chambre (qui contient la cvaleur de la cellule B5) en sélectionnant tous les onglets sauf ceux du résumé et ensuite en appliquant la variable dans l'onglet correspondant

Je vous copie colle le code (si cela peut répondre à la question d'un prochain)
Par contre je suis toujours à la recherche de comment faire pour dans l'écriture à la dernière ligne d'un tableau prendre en compte toutes les cases du dit tableau et n'écrire que si la plage (type A:Z) ne contient rien.

Code:
Sub Button1_Click()

Dim Sh As Worksheet
Dim DerLig As Long
Dim Cell As Range
Dim num_chambre As String

For Each Sh In ThisWorkbook.Worksheets
ThisWorkbook.Worksheets.Select

    If Sh.Name <> "Porte entree" And Sh.Name <> "Plomberie" Then
        ' traitement de la feuille
    num_chambre = Range("B5").Value
' dernière ligne de la colonne G
DerLig = Sh.Cells(Sh.Rows.Count, 7).End(xlUp).Row
       
' pour chaque cellule de la colonne G
For Each Cell In Sh.Range("G17:G19")
    ' si la cellule n'est pas vide
    If Cell.Value <> "" Then
Worksheets("Porte entree").Cells(Rows.Count, 1).End(xlUp)(2) = num_chambre
        ' feuille de destination
        With ThisWorkbook.Worksheets("Porte entree")
            ' on copie la valeur de la cellule A vers la feuille de destination
            ' (dans la première ligne non vide de la colonne A)
           ' .Cells(.Rows.Count, 1).End(xlUp)(2) = num_chambre
            .Cells(.Rows.Count, 3).End(xlUp)(2) = Cell.Offset(0, -6)
        End With
    End If
 Next Cell
 
Set Sh = Nothing
        
    End If
Next Sh

End Sub
 

a02halo

XLDnaute Nouveau
Re : Copier coller à la dernière ligne tableau prise en compte toutes les cellule

Méa Culpa : Je rencontre un nouveau soucis avec ma résolution précédente : En effet ma sélection de la cellule B5 ne s'applique qu'au premier onglet : la variable ne change pas lorsque le for each continue sur un autreonglet.

En somme, je me retrouve avec le même numéro de chambre, même si le résumé se remplit avec les informations d'autres onglets

Quelqu'un verrait comment je peux résoudre ce soucis.

P.S. : Il me suffisait de rajouter "Sh"lors de la déclaration de ma variable de telle façon : num_chambre = sh.range("B5")

Sachant que j'avais déclaré Sh comme étant mes worksheets


Je vous présente mes excuses pour ce dernier post inutile...
 
Dernière édition:

Statistiques des forums

Discussions
312 165
Messages
2 085 880
Membres
103 009
dernier inscrit
dede972