Macro pour coller des lignes

Bonjour à vous et bonne fetes de fin d'années à vous et vos proches.

Je voudrais dans mon fichier excel copier toutes les infos de la feuille "Questionnaire" ,qui apparaissent en colonnes M (Obligation) et N (interventions) en fonction des reponses de mon questionnaire, dans la feuille "Edition"

Je voudrais que la partie obligation apparaissent avant la partie intervention.

enfin je voudrais copier uniquement les lignes non vides dans la feuille "Edition" ou alors pouvoir supprimer les lignes vides ou a 0 dans la feuille edition

Merci de votre aide et de votre temps passé

15test-pour-excel.zip (29.53 Ko)

Bonsoir elsouba,

tu a écrit :

Je voudrais dans mon fichier excel copier toutes les infos de la feuille "Questionnaire"...

ah ben c'est chouette : c'est vite vu ! y'a aucune donnée à copier !

bonnes fêtes de fin d'année à toi aussi !

dhany

Oups.....

Bonsoir à toi

Normalement si tu selectionnes oui en b9 et en b10 ou b16 tu devrais avoir des infos en colonne m et/n.

Ce que je voudrais, après avoir utilisé les oui/Non, c est copié les informations apparaissant dans les colonnes m ou n de l onglet questionnaire et les faire apparaître dans l onglet edition

Mer de ton message et bonne fête à toi

Bonjour elsouba,

désolé, j'aurais dû m'rendre compte qu'il y a des

lignes masquées, donc avec des infos non visibles.

je te retourne ton fichier .xls (111 Ko) :

le même fichier en version .xlsm (39 Ko) :


* à l'ouverture du fichier, tu es sur la feuille "Edition" : tu peux voir qu'elle est entièrement vide

* va sur la 1ère feuille "Questionnaire" ; en D9, sélectionne "oui" ; puis fais Ctrl e

* sur la 1ère feuille, choisis d'autres valeurs "oui" ou "non" dans tes listes déroulantes ;

quand tu as fini tes choix, fais Ctrl e (les anciens résultats sont effacés automatiquement)


Alt F11 ➯ fenêtre « Microsoft Visual Basic »

regarde le code de ThisWorkbook ; de Feuil1 ; de Module1

Alt F11 pour retourner sur Excel

si besoin, tu peux demander une adaptation.

merci de me dire si ça te convient.

dhany

Merci de ton temps Dhany

Je regarde ton fichier et reviens vers toi des que possible.

Cordialement

ok, alors A+

Bonjour Dhany,

Tout d'abord merci pour les modifications que tu as faites en vba pour les lignes à masquer en fonction des reponses.

J'ai des questions :

Si je selectionne non en b9 et oui/non en b10 rien se transfert en edition

Serait possible de copier aussi les intitulés Obligation et Intervention presents dans la feuille Questionnaire pour les faire apparaitre dans la feuille edition?

Ta macro copie je suppose que je peux l'affecter à un bouton en feuille questionnaire?

si je parametre une mise en forme, sera-t-elle effacée à chaque fois que je ferais ctrl e?

Merci beaucoup de ton travail.

tu a écrit :

Si je sélectionne non en B9 et oui/non en B10 rien se transfert en Edition

j'ai besoin d'un renseignement :

la copie doit se faire seulement à partir des lignes visibles ?

ou même à partir des lignes masquées aussi ?

dhany

La copie devrait se faire en fonction des informations affichée en.colonne m ou n

Par exemple en mettant non en b9 et oui en b10 j ai des informations qui apparaissent en n ou m

Ces informations doivent apparaître dans édition et toujours dans l ordre suivant

Obligation en premier même si pas d info à affiche

Intervention après

J espère t avoir renseigne

Merci à toi

actuellement, la copie s'fait uniquement à partir des lignes visibles de la 1ère feuille "Questionnaire" ; les lignes masquées sont ignorées ; alors c'est p't'être pour ça que tu n'as pas c'que tu veux en feuille "Edition" ? je vais te faire une version où ça copie à partir de toutes les lignes de la 1ère feuille (visibles ou non), mais j'sais pas si c'est c'que tu veux ou non.

dhany

A l'heure actuelle, si je clique sur non en D9 et oui en D10 j'ai des info en M et en N mais quand je fait ctrl E rien se transferer en Edition.

Je fais peut etre une erreur.

Merci à toi

Sinon le reste fonctionne bien il e faudrait si je peux abuser de ton temps la copie des titres "Obligation" et "Intervention" en feuille Edition.

voici la nouvelle version :

c'est toujours à partir des lignes visibles seulement, car en fait, le problème venait d'aut' chose.

les titres "Obligations" et "Interventions" sont écrits, même si y'a aucune information.

dhany

Bonjour Dhany

Cela fonctionne exactement comme je voulais

je l'applique sur mon fichier original.

Dernière demande :

afin de ne pas me coucher idiot, pourrais tu me commenter ton code car je voudrais eventuellement ajouter des colonnes a copier.

Merci enormement a toi et joyeuse fete et vive ce forum

Bonjour elsouba,

désolé, mais j'étais pas dispo pour continuer ce sujet avant maint'nant.


tu a écrit :

Cela fonctionne exactement comme je voulais

merci pour ton retour !


tu a écrit :

pourrais-tu me commenter ton code

Option Explicit : pour forcer la déclaration des variables

Dim sh As Worksheet, lg2& : sh est une variable de type feuille de calcul ; lg2 est une variable de type Long

Private Sub Job(col As Byte) : la sub Job() fait le travail voulu pour une colonne donnée (une seule à la fois, celle dont le n° est transmis dans la variable col, qui est du type octet) ; le 1er appel envoie 13 : c'est la colonne M ; le 2ème appel envoie 14 : colonne N ; la sub est privée car elle a besoin d'être appelée uniquement par la sub CpyData(), du même module.

Dim lg1& : lg1 est une variable de type Long (regarde l'aide VBA sur les caractères de déclaration de type. )

Cells(Rows.Count, col).End(xlUp).Row : ligne de la dernière cellule utilisée, dans la colonne col ligne de la dernière Observation de la colonne M (1er appel) ; puis ligne de la dernière Intervention de la colonne N (2ème appel) ; d'où instruction complète :

For lg1 = 10 To Cells(Rows.Count, col).End(xlUp).Row : boucle lg1, de la ligne 10 à la dernière ligne utilisée de la colonne.

If Rows(lg1).Hidden = 0 Then .. End If : seulement si la ligne n'est pas cachéeseulement si elle est visible

With Cells(lg1, col) .. End With : avec la cellule qui est en ligne lg1, colonne col

If .Value <> "" And .Value <> "0" : si la valeur de la cellule référencée par le With est ni une chaîne de caractères vide, ni 0

Then sh.Cells(lg2, 1) = .Value: lg2 = lg2 + 1 : alors on écrit cette valeur sur la feuille sh, cellule ligne lg2, colonne 1 ; puis lg2 est incrémenté de 1 ➯ la prochaine valeur écrite le sera une ligne en dessous.

Next lg1 : ligne suivante


je te laisse déjà voir tout ça ; la suite une prochaine fois.

dhany

Bonjour Dhany,

ne t'excuse pas c'est deja beaucoup de me consacré du temps.

Si je veux ajouter une colonne à copier,je devrais ajouter 14 pour stipuler que c'est la 14ème colonnes mais est ce que le code suivant est correct car il me retourne une erreur :

End With

With .Cells(lg2 + 1, 1, 1)

.Font.Bold = -1: .Font.ColorIndex = 45: .Value = [o1]

End With

lg2 = lg2 + 2: Job 15: .Select

End With

Deplus, comment faire si je veux copier les lignes non pas a partir de A1 dans Edition mais à partir de A5 par exemple.

J'ai essaye de remplace A1 par A5 mais ceela ne fonctionne pas.

Merci de ta reponse /aide.

Cordialement

tu m'as pris de court ; solution provisoire, car plus tard, je vais avoir mieux à te proposer :

Sub CpyData()
  If ActiveSheet.Name <> "Questionnaire" Then Exit Sub
  Set sh = Worksheets("Edition")
  With sh
    .Columns(1).Clear
    With .[A1]
      .Font.Bold = -1: .Font.ColorIndex = 3: .Value = [M1]
    End With
    lg2 = 5: Job 13
    With .Cells(lg2 + 1, 1)
      .Font.Bold = -1: .Font.ColorIndex = 45: .Value = [N1]
    End With
    lg2 = lg2 + 2: Job 14
    With .Cells(lg2 + 1, 1)
      .Font.Bold = -1: .Font.ColorIndex = 23: .Value = [O1]
    End With
    lg2 = lg2 + 2: Job 15
    .Select
  End With
End Sub

* pour à partir de A5 au lieu de A1 : c'est lg2 initialisé à 5 au début, juste avant le 1er appel de Job

* pour .ColorIndex = 23, c'est pour la couleur du titre de la 3ème colonne, repris en 1ère colonne

dhany

Bonjour elsouba,

voici ton fichier modifié :

3testv3excel.zip (38.82 Ko)

dhany

Bonjour Dhany,

Je le regarde aujourd hui et je reviens vers toi.

Merci beaucoup et bon dimanche

Cordialement

Bonjour Dhany,

voici mon retour :

Ton travail correspond a 90% a mon souhait et je t'en remercie enormement.

Voici mes question/remarques :

Si j'ai non en D10 je devrais avoir le message d'information de F11 cela fonctionne pour oui en D10

Meme remarque pour oui en D18 je devrais avoir le message située en G19

avec ctrl +e la copie fonctionne pratiquement sauf que j'ai 58 au lieu du titre Intervention

enfin le message situé en ligne 61 ne doit apparaitre que selon certaines conditions et doit rester masqué.

Enfin y a t il une possibilité d'avoir l'ensemble des valeurs des listes deroulantes a "vierge" àl 'ouverture du chantier

Merci de te connaissances et de ton temps

Elsouba

Bonjour elsouba,

voici la nouvelle version :

3testv3excel.zip (39.32 Ko)

dhany

Rechercher des sujets similaires à "macro coller lignes"