Un End(xlup) capricieux
Bonsoir à tous,
D'une manière assez inexplicable (du moins avec mes compétences limitées en VBA) mon end xlup a décrété qui'il ne remonterait pas plus haut que la ligne 131 (qui est pourtant vide de chez vide).
Pas pratique puisqu'il est sensé indiquer le bas de la zone à copier. Je me retrouve donc quand je colle avec plein de lignes vides.
J'ai tout essayé pour le convaincre mais rien n'y fait.
Vous trouverez mon code ci-dessous et un fichier exemple en PJ!
Merci d'avance pour votre exceltise
Sub test()
Dim Ws As Worksheet
Dim LL As Integer
For Each Ws In ThisWorkbook.Worksheets
If Ws.Name = ("Remote") Then
If Ws.Name = ("Database") Then
Else
LL = Sheets("New attendance sheet").Range("B:G").End(xlUp).Row
Sheets("New attendance sheet").Range("B13:G13" & LL).Copy
Sheets("Database").Range("H60000").End(xlUp).Offset(1, 0).PasteSpecial xlValues
End If
End If
Next Ws
End Sub
Bonsoir,
Peut-être comme ceci
Sub test()
Dim Ws As Worksheet
Dim LL As Integer
For Each Ws In ThisWorkbook.Worksheets
If Ws.Name = ("Remote") Then
If Ws.Name = ("Database") Then
Else
LL = Sheets("New attendance sheet").Range("B:G").End(xlDown).Row
Sheets("New attendance sheet").Range("B13:G13" & LL).Copy
End If
End If
Next Ws
End Sub
Bonjour et bienvenue sur le forum
Essaie ce code :
Sub test()
Dim Ws As Worksheet
Dim LL As Integer
For Each Ws In ThisWorkbook.Worksheets
If Ws.Name = ("Remote") Then
If Ws.Name <> "Database" Then
LL = Sheets("New attendance sheet").Range("B" & Range("Tableau13").Rows.Count + 12).End(xlUp).Row
Sheets("New attendance sheet").Range("B13:G" & LL).Copy
End If
End If
Next Ws
End Sub
Qu'en est-il ?
Bye !
Bonsoir à tous les deux,
Tout d'abord un grand merci pour le précieux coup de main.
M12 votre solution ne fonctionne pas vraiment.
La zone copiée au lieu de s’arrêter à ligne 132 s'arrête je ne sais pas trop dans le fin fond du document.
Le xlup ne semble donc pas fonctionner correctement.
GMB votre solution ne fonctionne pas non plus mais pour le coup.
Excel m'envoie un message d'erreur 1004 avec le fameux "la méthode Range de l'objet "_global" a échoué.
C'est une erreur à laquelle je me frotte régulièrement sur mon doc sans trop la comprendre puisque tout est bien défini.
Des pistes supplémentaires?
Hello,
En regardant de plus près cette ligne : Range("B13:G13" & LL).Copy avec LL renvoyant toujours 1
ça revient à écrire : mm = Range("B13:G13").Row & LL => ce qui donne 131 // numéro ligne B13 => 13 // 13 & 1 => 131
donc si on écrit Range("B14:G14" & LL) => 141 ou Range("B15:G15" & LL) => 151
si c'est pour faire de la copie du contenu plein du tableau, un truc du genre avec l'enregistreur doit le faire dans un 1er temps non ?
Sub test()
Dim Ws As Worksheet
Dim LL As Integer
For Each Ws In ThisWorkbook.Worksheets
If Ws.Name = ("Remote") Then
If Ws.Name = ("Database") Then
Else
Range("B13:G13").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
End If
End If
Next Ws
End Sub
edit : avec ça tu peux connaitre la fin de ton tableau, par le jeu du déplacement :
Range("XFD1").Select
Selection.End(xlDown).Select
Selection.End(xlToLeft).Select
Range("B1048576").Select
fintab = Selection.End(xlUp).Row
la variable fintab récupére le numéro de ligne de la dernière ligne du tableau et tu peux créer ensuite dans ton code vba une adresse, exemple au lieu de B112 => "B" & fintab => qui renvoi B112
Nouvelle proposition à tester :
Sub test()
Dim Ws As Worksheet
Dim LL As Integer
For Each Ws In ThisWorkbook.Worksheets
If Ws.Name = ("Remote") Then
If Ws.Name <> "Database" Then
With Sheets("New attendance sheet")
LL = .Range("B" & .Range("Tableau13").Rows.Count + 12).End(xlUp).Row
.Range("B13:G" & LL).Copy
End With
End If
End If
Next Ws
End Sub
As-tu toujours le message ?
Bye !
Bonjour à tous,
Waard BRAVO. Votre code marche très bien. J'avais essayé avec l'enregistreur mais je n'arrivais pas à généraliser la formule....
C'est le problème avec Excel, on passe un temps fou pour résoudre des problèmes qui pour d'autres sont simples comme bonjour
Merci bcp en tout cas, et je vais faire un test aussi avec la méthode des déplacements.
GMB votre code m'envoie encore le message d'erreur.
Ma variable a pour lui 0 comme valeur.
J'ai l'impréssion que le problème ne vient pas tellement des commandes mais plutôt de la manière avec laquelle on indique à Excel où rechercher.
J'ai l''impression qu'il ne reconnait pas les noms des colonnes de tableau.
la ligne d'erreur est la suivante:
LL = .Range("B" & Range("Tableau13").Rows.Count + 12).End(xlUp).Row
En littéral cette ligne pourrait se treduire selon moi de la manière suivante:
LL = Regarde dans la colonne du tableau 13 située dans la colonne B de la feuille ==>Compte en partant du bas de cette colonne de tableau le nombre de cellules non vides et ajoute 12 pour les 12 premières lignes qui ne font pas partie du tableau.
C'est bien ça?
Encore merci pour votre aide!
Bonjour
David BS a écrit :C'est bien ça?
Oui, c'est bien ça !
Ci-joint le fichier avec l'application.
Bye !
Merci à tous pour le coup de main en tout cas!