recherche position derniere cellule vide dans colonne VBA pour coller donnée

bruno66

XLDnaute Occasionnel
bonjour , j'i epuré mon fichier pour plus de comprehension , dans la feuille 2 j'ai mis le commentaire de ma demande
merci d'avance
 

Pièces jointes

  • copier coller derniere cellule vide colonne C autre feuille.xlsm
    34.5 KB · Affichages: 81
Dernière édition:
C

Compte Supprimé 979

Guest
Re : recherche position derniere cellule vide dans colonne VBA pour coller donnée

Salut Bruno66 ;)

Voici le code
Code:
Private Sub CommandButton1_Click()
  Dim ShtCopie As Worksheet, ShtVers As Worksheet
  Dim Zone As Range, NextLig As Long
  ' Définir les variables objet des feuilles
  'Set ShtCopie = ActiveSheet
  Set ShtCopie = ThisWorkbook.Sheets("feuille 2")
  Set ShtVers = ThisWorkbook.Sheets("feuille 1")
  ' Définir la variable objet de la zone
  Set Zone = ShtVers.Range("C5:C11,C13,C16:C23")
  ' Trouver la prochaine ligne vide
  NextLig = LigneVide(Zone)
  ' Si la ligne a été trouvée <> 0
  If NextLig <> 0 Then
    ' On fait un copier/coller valeur
    ShtCopie.Range("B3:F3").Copy
    ShtVers.Range("C" & NextLig).PasteSpecial Paste:=xlPasteValues
  End If
  ' Effacer les variables objet
  Set ShtCopie = Nothing: Set ShtVers = Nothing: Set Zone = Nothing
End Sub


Function LigneVide(Rng As Range)
  Dim Cel As Range
  LigneVide = 0
  For Each Cel In Rng
    If Cel.Value = "" Then
      LigneVide = Cel.Row
      Exit Function
    End If
  Next Cel
  MsgBox "Toutes les lignes sont remplies !"
End Function

A+
 

bruno66

XLDnaute Occasionnel
Re : recherche position derniere cellule vide dans colonne VBA pour coller donnée

bonjour , je tiens a te féliciter personnellement Bruno45 pour ton travail exemplaire et la solution que tu m'as apporter dans un premier temps.
je vais voir pour faire des modification afin d'avoir un message journalier quand le transfert a été fait
Ajouter un collage des même données dans ma feuille 2 en dessous du bouton enregistrer pour controle
faire une boite de dialogue quand la semaine est termine
faire une boite de dialogue quand le mois est terminé aussi

le petit souci sur ton fichier , que je puisse continuer a saisir en colonne C en dessous meme si a et b sont vide car actuellement je ne peut plus remplir les lignes
merci d'avance du temps que tu consacre aux autre , encore merci
et bonne appetit
 

bruno66

XLDnaute Occasionnel
Re : recherche position derniere cellule vide dans colonne VBA pour coller donnée

rebonjour le forum donc concernant le travail de brunoM45 ,que je remercie encore ( malgre ses 8171 message posté ...)
dans son code et en essayant de la dechiffrer , je remaques qu’il n’as retenu a chaque fois que certaine plage de cellule( en jaune )
Code:
'Private Sub CommandButton1_Click()
'Dim copie As Worksheet, vers As Worksheet, derligne As Long
'Set copie = ActiveSheet
'Set vers = ThisWorkbook.Sheets("feuille 1")
'copie.Range("b3, c3, d3, e3, f3").Copy vers.Range("c" & vers.Rows.Count).End(xlUp)(2)
'End Sub
Private Sub CommandButton1_Click()
  Dim ShtCopie As Worksheet, ShtVers As Worksheet
  Dim Zone As Range, NextLig As Long
  ' Définir les variables objet des feuilles
  'Set ShtCopie = ActiveSheet
  Set ShtCopie = ThisWorkbook.Sheets("feuille 2")
  Set ShtVers = ThisWorkbook.Sheets("feuille 1")
  ' Définir la variable objet de la zone
  Set Zone = ShtVers.Range("C5:c33")                               ' code modifié Bruno66 pour essais
  'Set Zone = ShtVers.Range("C5:C11,C13,C16:C23")            code de Bruno45
  ' Trouver la prochaine ligne vide  
  NextLig = LigneVide(Zone)
  ' Si la ligne a été trouvée <> 0
  If NextLig <> 0 Then
    ' On fait un copier/coller valeur
    ShtCopie.Range("B3:F3").Copy
    ShtVers.Range("C" & NextLig).PasteSpecial Paste:=xlPasteValues
  End If
  ' Effacer les variables objet
  Set ShtCopie = Nothing: Set ShtVers = Nothing: Set Zone = Nothing
End Sub


Function LigneVide(Rng As Range)
  Dim Cel As Range
  LigneVide = 0
  For Each Cel In Rng
    If Cel.Value = "" Then
      LigneVide = Cel.Row
      Exit Function
    End If
  Next Cel
  MsgBox "Toutes les lignes sont remplies !"
End Function

…… d’où ma question encore pertinente


Dans mon exemple avec mon nouveau code… il fonctionne mais comme je l’indique , il fonctionne bien mais ne passe pas les lignes 12 ,14 et 24 malgré qu’elle soit dejà remplie par d’autres elements
Car je dois faire fonctionne ce fichier sur l’année pas sur une semaine
Ou incorporer un morceau d’un code permettant que quand on arrive a des lignes dejà remplie elle passe automatiquement a la dernière non rempli en suivant
Merci encore de vos efforts pour m’aider
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : recherche position derniere cellule vide dans colonne VBA pour coller donnée

Bonjour à tous.


Une autre approche :​
VB:
Private Sub CommandButton1_Click()
Dim i&, j&, k&, l&, t, w(), saute(), Plg1 As Range, Plg2 As Range, Fl As Worksheet

'============================================= PARAMETRES =============================================
Set Plg1 = Me.Range("B3:F3")                                                'Plage à copier
Set Plg2 = Me.Range("B8:F8")                                                'Plage de contrôle
Set Fl = Feuil2                                                             'Feuille de destination
saute = Array("FERMETURE HEBDO*", "SOLDE FIN DE MOIS*", "TOTAL SEMAINE*")   'Lignes à sauter.
'(Les lignes commençant par "FERMETURE HEBDO", "SOLDE FIN DE MOIS", "TOTAL SEMAINE" seront ignorées.)
'======================================================================================================

    Plg2.ClearContents
    l = UBound(saute)
    w = Plg1.Value
    k = Plg1.Columns.Count
    With Fl
        For i = 3 To .Rows.Count
            t = .Cells(i, 1).Value
            For j = 0 To l
                If t Like saute(j) Then Exit For
            Next
            If j > l Then
                For j = 3 To 2 + k
                    If Not IsEmpty(.Cells(i, j)) Then Exit For
                Next
                If j > 2 + k Then
                    .Cells(i, 3).Resize(, k).Value = w
                    Plg2.Value = w
                    Exit For
                End If
            End If
        Next
    End With

End Sub



ROGER2327
#6793


Lundi 23 Phalle 140 (Lazare, gare - fête Suprême Quarte)
16 Fructidor An CCXXI, 3,6280h - citron
2013-W36-1T08:42:26Z
 

Pièces jointes

  • Copie de copier coller derniere cellule vide colonne C autre feuille-1.xlsm
    32.4 KB · Affichages: 75
C

Compte Supprimé 979

Guest
Re : recherche position derniere cellule vide dans colonne VBA pour coller donnée

Re,

Bruno66, voici le code modifié pour autant de lignes que souhaité
VB:
Private Sub CommandButton1_Click()
  Dim ShtCopie As Worksheet, ShtVers As Worksheet
  Dim DLig As Long, NextLig As Long, Zone As Range
  ' Définir les variables objet des feuilles
  'Set ShtCopie = ActiveSheet
  Set ShtCopie = ThisWorkbook.Sheets("feuille 2")
  Set ShtVers = ThisWorkbook.Sheets("feuille 1")
  ' Récupérer le numéro de la dernière ligne de la feuille
  DLig = ShtVers.Range("A" & Rows.Count).End(xlUp).Row
  ' Définir la variable objet de la zone
  Set Zone = ShtVers.Range("C5:C" & DLig)
  ' Trouver la prochaine ligne vide
  NextLig = LigneVide(Zone)
  ' Si la ligne a été trouvée <> 0
  If NextLig <> 0 Then
    ' On fait un copier/coller valeur
    ShtCopie.Range("B3:F3").Copy
    ShtVers.Range("C" & NextLig).PasteSpecial Paste:=xlPasteValues
  End If
  ' Effacer les variables objet
  Set ShtCopie = Nothing: Set ShtVers = Nothing: Set Zone = Nothing
End Sub


Function LigneVide(Rng As Range)
  Dim Cel As Range
  LigneVide = 0
  ' En cas d'erreur on continue le code
  On Error Resume Next
  ' Pour chaque ligne de la zone
  For Each Cel In Rng
    ' Comme les lignes : FERMETURE HEBDO / SOLDE FIN DE MOIS / TOTAL SEMAINE
    ' contiennent des formules, elles ne sont donc pas vide
    ' Si la cellule est vide
    If Cel.Value = "" Then
      ' Si elle contient #REF! un erreur est produite <> 0
      If Err.Number = 0 Then
        LigneVide = Cel.Row
        Exit Function
      End If
    End If
    ' Effacer l'erreur
    Err.Clear
  Next Cel
  ' Remettre la gestion des erreurs
  On Error GoTo 0
  MsgBox "Toutes les lignes sont remplies !"
End Function

A+
 

bruno66

XLDnaute Occasionnel
Re : position derniere cellule vide dans colonne VBA pour coller donnée(résolu)

bonjour un grand merci pour cette reponse ROGER 2327 le code fonctionne a merveille et convient parfaitement au fichier que j'ai actuellement merci aussi a Bruno m45 pour son travail aussi et par ailleurs
bon week end
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
184

Statistiques des forums

Discussions
312 198
Messages
2 086 110
Membres
103 121
dernier inscrit
SophieS