Pb de selection

floon

XLDnaute Nouveau
Bonjour a tous,
j'ai une macro qui doit rapatrier des donnes de plusieurs feuilles ( variable nom ), pour savoir de quelle feuille viennent les donnees je souhaiterai remplir une colonne avec le nom de la feuille pour chaque ligne non vide ( la colonne O est la derniere a chaque fois ).
Mais j'ai un bug, ca ne marche pas quand je n'ai pas de ligne ou une seule, ma macro s'affolle et me rempli ma feuille avec le nom de la feuille :eek:

J'ai fait la bidouille suivant, c'est peut etre pas ce qu'il y a de mieux ... mais ca marcher jusqu a ce que je tombe sur une feuille avec une ligne ....
Code:
....
Sheets(nom).Select
'recup data pour affichage semaine
If Range("O1").Value = "" Then 
    Range("O1").Select
    Range(Selection, Selection.End(xlDown)).Select
    For Each cellule In Selection
         cellule.Offset(0, 1).FormulaR1C1 = nom
    Next
    Range("A1").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.Copy
    Sheets(nom).Activate
    Range("A1").Activate
    While IsEmpty(ActiveCell) = False
    ActiveCell.Offset(1, 0).Activate
    Wend
    ActiveSheet.Paste
End If
....
 

porcinet82

XLDnaute Barbatruc
Re : Pb de selection

Salut Floon,

Je ne suis pas sur de bien saisir ce que tu veux faire exactement, est-ce tu pourrais mettre un petit exemple en pièces jointes de ce que tu as au départ et du résultat souhaiter.

Sinon en passant, tu peuc mettre UsedRange.Copy a la place de :
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy


@+
 

floon

XLDnaute Nouveau
Re : Pb de selection

salut tout le monde,
pour l'exemple je voudrais bien mais c'est une infime partie de la macro et du coup il faudrait que je reecrive pas mal de chose
Mais comme en ce moment je viens deja plus trop sur le forum par manque de temps ca va etre tendu ...
Code:
....
Sheets(nom).Select
'recup data pour affichage semaine
If Range("O1").Value = "" Then 
    Range("O1").Select
    Range(Selection, Selection.End(xlDown)).Select
    For Each cellule In Selection
         cellule.Offset(0, 1).FormulaR1C1 = nom
    Next
    UsedRange.Copy 
    Sheets(nom).Activate
    Range("A1").Activate
    While IsEmpty(ActiveCell) = False
    ActiveCell.Offset(1, 0).Activate
    Wend
    ActiveSheet.Paste
End If
....

Mon bug vient sur la premiere partie qui doit rajouter a la fin de chaque ligne non vide la variable "nom"

Pour le faite de remonter j'ai compris le principe, j essayerai de mettre ca au point dans la semaine
merci a tous pour votre boulot
Et bon dimanche !
 

porcinet82

XLDnaute Barbatruc
Re : Pb de selection

Salut Floon,

Je viens a nouveau de jeter un oeil a ton code, et plusieurs chose me semble bizarre. Tout d'abord la ligne Sheets(nom).Select te permet de sélectionner la feuille dont le nom est contenu dans la variable nom, mais ce qui est bizarre c'est la ligne cellule.Offset(0, 1).FormulaR1C1 = nom ou tu mets le nom de la feuille (c'est à dire la variable nom) qui ici serait une formule ??? Si ce n'est pas une formule, mets plutot cellule.Offset(0, 1).Value= nom

Autre chose, la boucle suivante te permet de trouver et de sélectionner la première cellule non vide de la colonne A si j'ai bien compris, pour ensuite faire ton coller.
PHP:
While IsEmpty(ActiveCell) = False
   ActiveCell.Offset(1, 0).Activate
Wend

Est-ce qu'un simple Range("A65536").End(xlUp)(2).Select ne suffirait pas?

@+
 

floon

XLDnaute Nouveau
Re : Pb de selection

porcinet82 à dit:
Est-ce qu'un simple Range("A65536").End(xlUp)(2).Select ne suffirait pas?
@+

Euh si peut etre, comme je l'ai deja indiqué je debute en vba :eek:
Du coup j'ai recuperé cette "formul" et reutilise, comme ca fonctionner je me suis pas inquieté...

Mais pas de probleme je modifie ca :D
merci !

Code:
....
Sheets(nom).Select
'recup data pour affichage semaine
If Range("O1").Value = "" Then 
    Range("O1").Select
    Range(Selection, Selection.End(xlDown)).Select
    For Each cellule In Selection
         cellule.Offset(0, 1).Value= nom
    Next
    UsedRange.Copy 
    Sheets(nom).Activate
    Range("A65536").End(xlUp)(2).Select
    ActiveSheet.Paste
End If
....

Pour mon probleme de selection y a quelqu'un qui a une idee ?
Histoire de pouvoir regler le bug quand il y a une seule ligne ( ou pas du tout )
 

porcinet82

XLDnaute Barbatruc
Re : Pb de selection

re,

Quelle buse, je t'avais fait la correction de cette ligne de code aussi et j'ai oublié de te la mettre, donc voici la modif :
PHP:
...
If Range("O1").Value = "" Then
    Range("O1:O" & Range("O65536").End(xlUp).Row).Select
    For Each cellule In Selection
         cellule.Offset(0, 1).Value = "nom"
    Next
...

@+
 

floon

XLDnaute Nouveau
Re : Pb de selection

merci beaucoup !
Mais ca marche pas ...
Code:
'recup data pour affichage semaine
If Range("O1").Value = "" Then
    Range("O1:O" & Range("O65536").End(xlUp).Row).Select
    For Each cellule In Selection
         cellule.Offset(0, 1).Value = "nom"
    Next
    UsedRange.Copy
    Sheets(nom).Activate
    Range("A65536").End(xlUp)(2).Select
    ActiveSheet.Paste
End If
Ca met bien la variable nom au bout de la premiere ligne mais pas pour chaque ligne non vide ...
Et puis derriere ca copie rien dans mes feuilles ...
J'ai pas de bol, merci pour le boulot en tout cas ....
 
Dernière édition:

bqtr

XLDnaute Accro
Re : Pb de selection

Bonjour tous le monde,

Tu trouveras en pièce jointe un fichier qui correspondra peut-être à ce que tu cherches.
Il copie les données des feuilles 2 et 3 sur la feuille 1 en ajoutant la provenace des feuilles dans la colonne E de la feuille 1.

A toi de l'adapter si ca te convient.

Bonne journée

P.O
 

Pièces jointes

  • recupdonnées.xls
    28.5 KB · Affichages: 36

Discussions similaires

Réponses
5
Affichages
174

Statistiques des forums

Discussions
312 480
Messages
2 088 757
Membres
103 951
dernier inscrit
Misterb