Dernière ligne d'une feuille_VBA

RodyRody Messages postés 48 Statut Membre -  
RodyRody Messages postés 48 Statut Membre -
Bonjour,

Désolé de revenir vers vous avec un sujet déjà tellement traité. Mais pourtant malgré les recherches que je fais sur le forum je ne vois pas ce qui cloche dans mon code.
J'ai une erreur sur la ligne 5 de mon code: "Set plage = WS.Range("A2:A " & dernl) "
Est ce que par hasard quelque chose que j'aurais oublié vous saute au yeux ??

Dim plage As Range
Dim cellule As Range
Dim dernl As Long
dernl = Range("A65536").End(xlUp)
Set plage = WS.Range("A2:A " & dernl) => erreur 1004
For Each cellule In plage
cellule.Offset(0, 13).Value = cellule.Offset(0, 0).Value & cellule.Offset(0, 11).Value & cellule.Offset(0, 12)
Next

Merci à tous
A voir également:

6 réponses

RodyRody Messages postés 48 Statut Membre
 
Oui aussi je rajoute pour plus de compréhension que quand je rajoute un msg box pr voir la donnée que je trouve en dernl j'ai 0. Mais je ne comprends pas pourquoi ???
dernl = Range("A65530").End(xlUp)
MsgBox dernl
0
chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   1 312
 
Bonjour,

voici une astuce (merci à pijaku pour cette fiche) qui vous dira comment obtenir la dernière ligne non vide.

Cordialement.
Ce mec la n'était pas une lumière, car il était niais.
0
RodyRody Messages postés 48 Statut Membre
 
Bonjour Chossette9.
J'avais déjà étudié le lien de Pijaku et pourtant je ne résoud tjrs pas mon problème.

Dim plage As Range
Dim cellule As Range
Dim DernLigne As Long
DernLigne = Range("A" & Rows.Count).End(xlUp).Row
MsgBox DernLigne
Le msgbox me donne tjrs "1"

Je mets un lien vers mon fichier voir si vous comprenez quelque chose. Sinon je contournerai le problème? Merci beaucoup de vos efforts.


https://www.cjoint.com/?BAuquKNqt89
0
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 768
 
Bonjour,
Tu as omis le .Row :
Dim dernl As Long 
dernl = Range("A65536").End(xlUp).Row

Ensuite c'est quoi WS???
Set plage = WS.Range("A2:A " & dernl)

0
RodyRody Messages postés 48 Statut Membre
 
Bonjour pijaku,
Merci de ta réponse. Je n'avais mis qu'une partie du code et j'avais déjà déclarer WS.
Ci-dessous mon code complet. Pourtant même quand je rajoute row le msBox me renvoie "1". Ce qui n'est pas logique non ?
Merci de tes conseils

Dim WS As Worksheet
Dim zone_a_copier As Range
Dim zone_a_coller As Range

Set WS = Sheets("Conca_1")
WS.Cells.Clear
Set zone_a_copier = Sheets("Conca").Range("A1")
Set zone_a_coller = Sheets("Conca_1").Range("A1")

zone_a_copier.CurrentRegion.Copy
zone_a_coller.PasteSpecial xlPasteValues

WS.Range("N:N").EntireColumn.Insert
WS.Range("N1").Value = "Concatenation"

Dim plage As Range
Dim cellule As Range
Dim dernl As Long
dernl = Range("A65536").End(xlUp).Row
MsgBox dernl
'Set plage = Range(" A2 : A " & dernl)
'For Each cellule In plage
'cellule.Offset(0, 13).Value = cellule.Offset(0, 0).Value & cellule.Offset(0, 11).Value & cellule.Offset(0, 12)
'Next
0
Le Pingou Messages postés 12716 Date d'inscription   Statut Contributeur Dernière intervention   1 467
 
Bonjour RodyRody,
Est-ce que par hasard cela est en rapport direct avec Base DD....!?
Salutations
Le pingou
0
RodyRody Messages postés 48 Statut Membre
 
Loool bien vu Le Pingou...désolé de solliciter autant le forum mais croyez moi que j'essaye toujours tout seul avant de poser ma question.
Je ne peux pas utiliser de "somme prod" car c'est trop long. Donc je passe par une feuille qui concatenne mes trois critères puis dans insertion/non je vais créer une plage de de donnée dynamique pour faire un rechercherV dans ma feuille "managed". Mais je n'arrive pas à concatenner en VBA. Je craque
0
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 768
 
ok.
Donc tu fais bosser, pour toi, un max de bénévoles, et quand la solution ne te plait pas, tu laisses tomber sans explication et demande à d'autres.

En plus tu réponds un beau Loool !......

Je te laisse donc.
Salutations

ps : le pingou, désolé.
A+
0
RodyRody Messages postés 48 Statut Membre
 
Désolé je ne comprends pas ce qui te froisse. Je remercie tout le monde qui à bien voulu me consacrer du temps...et je suis à disposition pour toute question ou toute aide que je pourrais fournir à un autre internaute......dans le principe de bon entente et d'entraide du forum. J'essaye de trouver d'abord tout seul et quand je n'y arrive pas je me tourne vers le forum.
Désolé d'être débutant....
Je posterai une fois que j'ai fini le fichier complet pr que tout le monde puisse en profiter..
Merci à vous tous et bonne journée
0
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 768
 
tu trouves toujours 1, alors précises de qu'elle feuille tu souhaites la dernière ligne.
Tente un :
WS.Range("A65536").End(xlUp).Row 

De même que :
'Set plage = WS.Range(" A2 : A " & dernl) 
0
RodyRody Messages postés 48 Statut Membre
 
Super effectivement ca fonctionne quand je mets WS avant
super merci beaucoup
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
tiens, comme il y a du beau monde sur ce post, une proposition pour la base de données

la base de données est dans un fichier séparé "concat.xls" du même répertoire que draft.xls
concat.xls doit être fermé

mais c'est quand m^me un peu lent (8 sommes SQL par ligne): on pourrait accélérer en tenant compte des requ^tes vides mais... (j'vas essayer)
https://www.cjoint.com/?3Aus3eLwVZ5
Michel
0
RodyRody Messages postés 48 Statut Membre
 
Merci michel_m pour cette solution.
Ca fonctionne très bien mais le tps de résolution est vraiment trop long.
A partir de la base de donnée ("Conca") je dois creer une dizaine d'autres bases de données en filtrant selon différents critères. Avec les formules matricielle ca me prend environ 45 minutes.
Je pense que la solution réside surement dans VBA mais etant neophyte je ne sais pas du tout comment m'y prendre.
Merci quand même de ton aide.
Bonne journée.
Rod
0
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
J'ai une idée dans mes cartons (autre que les requ^tes vides): je bidouillerai ça en fin d'aprem ou demain matin

Néanmoins si le TCD " fait en 10 minutes par un expert (...??)" fonctionne, reste sur cette solution

remarque: c'est certainement trop tard ou impossible (licence logiciel) mais ce genre d'extraction sur grande base (27 col x 30000 lig) aurait demandé l'utilisation d'access; voir les recommandations de la maison-mère:
http://office.microsoft.com/fr-ch/excel-help/utilisation-d-access-ou-d-excel-pour-gerer-vos-donnees-HA001042918.aspx
0
RodyRody Messages postés 48 Statut Membre
 
Michel je te remercie enormement. Si tu as quelque chose je suis plus qu'intéressé. Moi mon fichier ressemble plus à du bidouillage qu'autre chose ; )
0
Le Pingou Messages postés 12716 Date d'inscription   Statut Contributeur Dernière intervention   1 467
 
Bonjour RodyRody,
Juste une question au passage, si je regarde les résultats de la feuille [Managed] plage [H6 :P313] et que je compare avec celle de ce nouveau classeur feuille [EA] les valeurs ne correspondent pas .... Est-correct ?
Salutations
Le Pingou
0
RodyRody Messages postés 48 Statut Membre
 
Le Pingou,
Merci de cette remarque.
Oui je pense que c'est normal. La feuille [EA] =>(pr economic assumption) et la feuille Managed (pr Managed Unit) ne doivent pas aller chercher les même critères de la feuille conca. Malheureusement je n'ai pas accès à mes fichiers joints du au parefeu de mon entreprise pr vérifier. Mais je pense que ca doit être pr ca que je n'ai pas les mêmes valeurs.
En revanche, je dois trouver la même donnée entre la feuille "Conca" et la feuille "EA"
Salutation amicale.
0
Le Pingou Messages postés 12716 Date d'inscription   Statut Contributeur Dernière intervention   1 467
 
Bonjour RodyRody,
Merci infiniment pour l'explication, j'ai saisi la nuance, maintenant c'est clair.
0