Peut-on lancer une macro juste en sélectionnant une ligne ?

Guy_L

XLDnaute Occasionnel
Je souhaite remplir une feuille (C) avec des données se trouvant dans une autre (A).
Chaque cellule destinatrice = une cellule issue d'une colonne de la feuille source.
Celle-ci est un tableau nominatif avec différentes attribution concernant la personne de la ligne.

Une solution est de copier la ligne souhaitée depuis (A) puis de la coller ailleurs (feuille B) pour que ce "ailleurs" serve de source constante (par exemple copier la ligne 13 de M Durand (feuille A) dans la feuille servant de relais (feuille B). La feuille destination (C) ayant des formules qui récupèrent ces données pour remplir ses propres cellules.

Mais est-il possible, juste en sélectionnant une ligne de la feuille A de lancer une macro qui fasse le travail de recopie ?
 

ROGER2327

XLDnaute Barbatruc
Re : Peut-on lancer une macro juste en sélectionnant une ligne ?

Re...


Histoire de bien comprendre:
le script "Cible.EntireRow.Copy Destination:=" copie l'intégralité de la ligne (Entire) (...)
... ce qui est conforme à votre demande :​
(...)
Une solution est de copier la ligne souhaitée depuis (A) puis de la coller ailleurs (feuille B) (...)
Histoire de bien comprendre, posez précisément votre problème réel. Par exemple :
" je veux copier les cellules des colonnes C à F d'une ligne puis les coller ailleurs "
ce à quoi on vous répondra :​
Code:
      Cible.Range("C1:F1").Copy Destination:=
au lieu de :​
Code:
      Cible.EntireRow.Copy Destination:=


Bonne journée.


ℝOGER2327
#7046


Mercredi 11 Sable 141 (Nativité de Saint Grabbe, scherziste - fête Suprême Quarte)
21 Frimaire An CCXXII, 5,9632h - érable à sucre
2013-W50-3T14:18:42Z
 

Si...

XLDnaute Barbatruc
Re : Peut-on lancer une macro juste en sélectionnant une ligne ?

salut

C’est le genre de discussion qui ne devrait plus apparaître surtout après tant de sujets lancés :

Demande imprécise, qui change au fil des réponses sans d’ailleurs de commentaires sur certaines propositions.

]Je souhaite remplir une feuille (C) avec des données se trouvant dans une autre (A).
Chaque cellule destinatrice = une cellule issue d'une colonne de la feuille source.

J'ai même pu la simplifier un peu puisque je copie toujours dans la même ligne (feuil7 , ligne 2)

J'avais bien posé mon problème

NON à moins que je ne sache pas te lire !
 

Guy_L

XLDnaute Occasionnel
Re : Peut-on lancer une macro juste en sélectionnant une ligne ?

salut
C’est le genre de discussion qui ne devrait plus apparaître surtout après tant de sujets lancés
je suis désolé, mais je trouve le ton un peu "sévère" alors que je ne suis jamais incorrect dans mes posts. Je n'ai pas lancé plusieurs sujets au sein de celui-ci.
Demande imprécise, qui change au fil des réponses sans d’ailleurs de commentaires sur certaines propositions.
Non, pas du tout, j'ai bien détaillé ma demande très ciblée dans ma question, j'ai seulement demandé à ROGER2327 de m'apporter une précision quant-à sa réponse (dont je redis qu'elle est tout à fait appropriée et que je l'en remercie).
NON à moins que je ne sache pas te lire !
Par correction, je vais dire que j'ai dû mal m'exprimer ;-)
Le fait est que l'exemple que tu cites est tout à fait explicite d'une incompréhension:
Quand je dis:
Je souhaite remplir une feuille (C) avec des données se trouvant dans une autre (A).
Chaque cellule destinatrice = une cellule issue d'une colonne de la feuille source.
je n'évoque pas un changement de ligne destinatrice
donc
J'ai même pu la simplifier un peu puisque je copie toujours dans la même ligne (feuil7 , ligne 2)
est dans cette même lignée, je n'ai pas changé de demande contrairement à ce que tu affirmes.

Par ailleurs, étant moi-même animateur d'un forum, je suis un peu surpris par cette "tension" qui se ressent dans tes mots. En effet, si le principe d'un forum n'est pas de renseigner et chercher des renseignements sur un sujet, alors il faut faire autre chose plutôt que de s'énerver au moindre hiatus.
La pertinence d'une réponse n'empêche pas d'avoir une soif de s'améliorer pour être à même de proposer soi-même ses services à d'autres, non ?

Enfin, qu'est-il plus judiscieux de faire ? :
- poursuivre sur un sujet en prolongeant le thème s'il fait suite aux réponses apportées
- entamer un nouveau sujet dès que la demande n'est plus "exactement" celle qui a lancé le sujet

C'est dommage, j'avais pourtant une question toujours liée à ce même sujet, mais franchement, j'hésite à la poser, vu la façon dont je dois prendre des "gants blancs" pour l'exprimer.
 
Dernière édition:

Guy_L

XLDnaute Occasionnel
Re : Peut-on lancer une macro juste en sélectionnant une ligne ?

Je me lance tout de même, car la réponse à ma question initiale ayant été constructive, je pense que la suite le sera probablement aussi. par contre, j'ai maintenant un doute: dois-je poursuivre ici ou lancer un nouveau sujet ? Pour l'instant, comme c'est directement lié à ce qui précède je pose la question ici:

L'étape suivante est donc d'imprimer autant de formulaires que de lignes dans la feuille A (on pourrait le faire via le publipostage de Word par exemple, mais il faut rester dans le contexte Excel).

Voici donc le principe que je voudrais produire par macro:

Avec le même procédé que le remplissage automatique précédent:
- sélection de la première ligne de données,
- impression de la feuille C
- sélection de la ligne suivante
- impression ...
et ce jusqu'à ce que toutes les lignes de la feuille A non vides aient été balayées.

J'ai écrit le script suivant, mais il bugge sur la ligne "Cible.Rows.Count = i" (erreur de compilation, nombre d'arguments incorrect ou affectation de propriété incorrecte):
Code:
Sub Impr_Totale()
    Dim Cible As Range
    Sheets("FeuilleA").Select
    i = 3
    While Sheets("FeuilleA").Cells(i, 1).Value <> ""
        Cible.Rows.Count = i
'        Rows("1:" & i).Select
            With Feuil7
              Cible.EntireRow.Copy Destination:=.Cells(3, 1)
'              i.EntireRow.Copy Destination:=.Cells(3, 1)
            End With
        Sheets("FeuilleC").Select
        ActiveSheet.PrintOut Copies:=1
        i = i + 1
    Wend
End Sub

je détaille (en gras)

Sub Impr_Totale()
Dim Cible As Range 'déclaration de la variable Cible comme Range (ligne)
Sheets("FeuilleA").Select 'sélection de la feuille A (feuille avec les données de départ)
i = 3 'initialisation de la variable i à la valeur 3 (3ème ligne, les deux premières étant des titres)
While Sheets("FeuilleA").Cells(i, 1).Value <> "" 'faire temps que la cellule Ai est différente de vide
Cible.Rows.Count = i 'la ligne sélectionnée est i
' Rows("1:" & i).Select
With Feuil7 'La feuille 7 est la Feuille B de mon explication initiale, elle "reçoit" la copie de la ligne i
Cible.EntireRow.Copy Destination:=.Cells(3, 1) 'copie de la ligne i en feuille B (7) ligne 3
' i.EntireRow.Copy Destination:=.Cells(3, 1) 'essai en intégrant i dans la formule, mais ne focntionne pas c'est pourquoi elle est affublée de la ' comme remarque
End With
Sheets("FeuilleC").Select 'sélection de la feuille C (formulaire final)
ActiveSheet.PrintOut Copies:=1 'impression de la feuille sélectionnée
i = i + 1 'incrément de i (de ligne)
Wend
End Sub

Pouvez-vous m'aider ? (en m'expliquant ce qui ne va pas, merci)
 

Chri8Ed

XLDnaute Occasionnel
Re : Peut-on lancer une macro juste en sélectionnant une ligne ?

Bonjour à tous

je suis ce post avec attention pour une utilisation peut-être personnelle

Bonjour Si
Je n'arrive pas à télécharger ton fichier
Peut-être a t-il été mal chargé ?

A+
 

ROGER2327

XLDnaute Barbatruc
Re : Peut-on lancer une macro juste en sélectionnant une ligne ?

Re...


(...)
Pouvez-vous m'aider ? (en m'expliquant ce qui ne va pas, merci)
  • Cible n'est pas défini.
  • Rows.Count est en lecture seule : vous ne pouvez pas écrire Cible.Rows.Count = i.

Essayez ceci :
VB:
Sub Impr_Totale()
    Dim i&
    i = 3
    While Sheets("FeuilleA").Cells(i, 1).Value <> ""
        Sheets("FeuilleA").Rows(i).EntireRow.Copy Destination:=Feuil7.Cells(3, 1)
        Sheets("FeuilleC").PrintOut Copies:=1
        i = i + 1
    Wend
End Sub


Bonne journée.


ℝOGER2327
#7059


Vendredi 13 Sable 141 (Saint Flaive, concierge - fête Suprême Quarte)
23 Frimaire An CCXXII, 4,8784h - roseau
2013-W50-5T11:42:29Z
 

Discussions similaires

Réponses
9
Affichages
127

Statistiques des forums

Discussions
312 967
Messages
2 094 028
Membres
105 920
dernier inscrit
SAUSSARd