Se connecter avec
S'enregistrer | Connectez-vous

Macro copier / coller ligne sur autre feuille selon condition

Dernière réponse : dans Programmation

Bonjour,

Je cherche à copier des lignes en respectant une condition et les coller dans une autre feuille.
J’ai eu beau lire et relire à travers les forums des solutions proposées, je suis tellement nulle en VBA, qu’il y a toujours quelque chose qui cloche quand j’essaye d’appliquer une solution à mon fichier.
Please HELP !!

Voici quelques infos sur le classeur concerné
La feuille source : Liste intégrale (disons LI)
La feuille où je souhaite copier les données : Renouvellement (disons RE)
Dans la feuille source j’ai 11 colonnes : Code / Langue / Raison sociale / Tél / Fax / Email / Date agrément / Année Renouvellement (disons iAR)/ Certification ISO / Validité ISO / Nouveau certificat
Je souhaite copier toutes les lignes dont l’année de renouvellement est 2007 (ou année en cours si possible, de façon à ne pas changer la macro chaque année) et les coller dans la feuille « Renouvellement » (en ligne 2 – la ligne 1 étant réservée aux titres)
Au départ mon tableau source est trié sur le critère raison sociale et je souhaite retrouver cet ordre après le copier / coller

Merci d’avance à ceux qui se pencheront sur le problème
Lassé par la pub ? Créez un compte

Je suis en train de faire le point sur les différentes réponses faites sur une question de copier dans le forum.
Peux-tu me dire ce que signifie
"Dim ligneH As Long
ligneH = 1"
en tête de code.
Ma question est très certainement simpliste, mais j'avoue débarquer dans le VBA et j'ai vraiment envie de comprendre ce que j'écris, pur pouvoir appliquer à d'autre cas le fait de copier ou extraire des données en fonction de conditions particulière.
Merci d'avance
Expert Programmation

Ta question est effectivement simple et digne d'un très grand débutant !
(C'est un état qui ne dure pas et par lequel nous sommes tous passés)

Cela ne m'ennuye pas de répondre aux gens de bonne volonté.
(Pour prouver ta bonne volonté, s'il en était besoin, utilise la balise [code] pour présenter même deux lignes)

Avant de te répondre, j'aimerais que tu mettes ton curseur sur le mot Dim, que tu appuyes sur [F1] et que tu lises TOUT ce qui s'affiche ;) 

A te lire.

Bon j'avoue ne pas tout avoir compris, mais j'ai découvert des choses intéressantes.
Désolée, mais je vais encore posée une question digne d'un grand débutant des forums (mais c'est aussi le cas) : je veux bien utiliser la balise [code], mais comment tu fais ?
STP ne baisse pas les bras en lisant ce message, je suis sûre qu'une fois que je serai mise sur les rails je devrai y arriver.
Cela fait plusieurs jours que je lis les macros des autres pour essayer de comprendre l'esprit du VBA (uniquement dans le cadre de mon exemple, pour l'instant).
NB : j'ai d'ailleurs remarqué que tu répondais souvent et assidument aux débutants VBA
Expert Programmation

Voui, je réponds aux débutants, même les grands, en VB, en forum, et autres (Je suis bien obligé, je suis un des modos ;)  )
Mais as-tu remarqué que je faisais trouver une solution avant de de donner la mienne ;)  Tu vas subir le même sort [:nyghost]

Alors, pour la balise [code], une visite au règlement t'aurait fait le plus grand bien :



Alors, et ce résultat pour Dim ?

Bon j'avoue j'ai un peu honte, mais il faut bien un début à tout !!
Merci pour le code, en fait je viens de comprendre qu'en utilisant la réponse rapide on n'avait pas la barre d'outil pour le code ! Ha ! :pt1cable: 

Pour la question sur le Dim, j'ai compris que cela servait à déclarer des données et nottament leur format (je ne sais pas si ma réponse est très claire?)
En fait ma question était plus sur quand utilise-t-on "As Long" et j'ai fait comme tu m'as dit! F1 cela marche bien ! Lol

Bon j'ai tout de même essayé d'avancé sur mon pb de copier coller, voici ce que j'ai écrit (tu reconnaitras ta pates, j'ai pioché dans d'autres réponses que tu as faites). Sauf que bien évidemment cela ne marche pas.
  1. Private Sub CommandButton1_Click()
  2. Dim iLI As Integer
  3. Dim iRE As Integer
  4. Dim LI As Worksheet
  5. Dim RE As Worksheet
  6.  
  7. Set LI = Worksheets("Liste intégrale")
  8. Set RE = Worksheets("Renouvellement")
  9.  
  10. iRE = 2
  11.  
  12. For iLI = 3 To 10000
  13. If LI.Cells(iLI, 9).Text = "2007" Then
  14. LI.Range("iLI:iLI").Copy RE.Range(iRE, 1).Paste
  15. iRE = iRE + 1
  16. End If
  17. Next
  18. Application.CutCopyMode = False
  19. End Sub


L'erreur est sur la ligne 14 :
"La méthode 'Range' de l'objet '_Worksheet' a échouée"
On est bien d'accord que lorsque dans la feuille Liste intégrale (LI) au niveau de la colonne 9, le texte 2007 apparait, je veux copier la ligne correspondante et la coller dans la feuille Renouvellement (RE). Et ceux pour toute les lignes du tableaux

Aller dis moi qu'il ne manque pas grand chose pour y arriver !
Expert Programmation

Et non. C'est plein d'erreurs ;) 

Un numéro de ligne, sous Excel, va de 1 à 65536.
Un Integer, sous VBA, va de -32769 à 32768.
Donc un numéro de ligne n'est forcément pas un Integer.
Le type de données entier supérieur est Long.

Comment, tu n'utilises que la plage 3:10000 ? Qu'est-ce que ça peut me faire ? Tu vas revenir en me disant que ça ne marche pas si tu as un peu plus de données la prochaine fois !

Toutes les autres erreurs sont concentrées La ligne 14 !!!!!!

Cells prend en paramètre la ligne et la colonne sous forme d'entier et renvoie une plage de cellules d'une seule cellule.
Range prend en paramètre un ou deux ranges, ou une adresse sous forme de chaîne et renvoie une plage de plusieurs cellules.

Donc, RE.Range(iRE, 1) est faux. Il faut mettre Cells à la place.

Si iLi = 3, alors "iLI:iLI" = .... "iLI:iLI" ! :D  :D 
Pour avoir 3 si il y a 3 dans iLi, il faut utiliser iLi, pas "iLi".
Comment faire pour avoir "3:3" en partant de iLi = 3 ?
Comme ça :
iLi & ":" & iLi


Qu'est-ce que ce .Paste vient faire là ? Vire-moi ça de là. Et si tu veux savoir pourquoi, relis la doc ( [F1] ) sur Copy.

Perso, quand je donne un exemple sur ce site (je ne le fais pas dans mes macros ;)  ) je l'écris comme ça pour fixer les idées :
Range( <départ> ).Copy Destination:=<arrivée>
même si la syntaxe suivante est juste
Range( <départ> ).Copy <arrivée>


Ultime erreur, ligne 19. Qu'est-ce que ce CutCopyMode fait là. Vire-moi ça de là.

C'est tout :) 

Bonjour,

Désolée de ne pas t'avoir répondu hier , mais j'ai du partir précipitamment.
Je m'y suis donc remise ce soir et EUREKA :bounce:  !!!!!!!! après avoir modifié tout ce que tu m'as dit cela fonctionne parfaitement. :pt1cable: 
Je pense que tu peux t'attribuer la palme de la patience !!
En tous les cas GRAND MERCI à toi pour ton royal coup de main!!!!!
Je dois appliquer cette macro à d'autres fichiers un peu plus complexes (et c'est non plus du copier / coller que je dois faire, mais de l'extraction de données vers une autre feuille). Si j'ai un problème, j'espère que tu ne vois pas d'inconvénient à ce que je revienne vers toi.
Au plaisir de te retrouver sur le forum.... :hello: 

Bonjour,

J'ai de nouveau besoin de votre lumière pour une macro assez proche du copier / coller décrit ci-dessus, sauf que c'est pour faire du couper / coller.
Je suis donc repartie de la macro précédente et j'ai remplacé copy par cut ce qui donne (nb les données ont aussi changées) :
  1. Private Sub CommandButton1_Click()
  2. Dim iR As Long
  3. Dim iAV As Long
  4. Dim R As Worksheet
  5. Dim AV As Worksheet
  6.  
  7. Set R = Worksheets("Revue")
  8. Set AV = Worksheets("Actions validées")
  9.  
  10. iAV = 17
  11.  
  12. For iR = 17 To 65536
  13. If R.Cells(iR, 6).Text = "V - Validé" Then
  14. R.Range(iR & ":" & iR).Cut AV.Cells(iAV, 1)
  15. iAV = iAV + 1
  16. End If
  17. Next
  18. End Sub


Jusque là tout marche parfaitement, mais je voudrai apporter 3 modif que je ne sais pas du tout comment intégrer :
- tout d'abord je souhaiterai que les lignes coupées de la feuille "Revue" (puis coller dans l'autre) soit supprimées, de façon à ne pas avoir de ligne vide dans la feuille "Revue". J'ai essayer d'insérer "Delete Shift:=xlUp" entre les lignes 14 et 15, mais visiblement c'est pas bon!
- ensuite il faudrait non plus que je colle systématique à partir de la ligne 17 de la feuille "Actions validées", mais à partir de la première ligne vide, après la ligne 16 (les lignes de 1 à 16 étant utilisé pour faire un en-tête de page où certaines lignes sont vides)
- dernier point, celui qui à mes yeux me paraît le plus compliquer, je souhaiterai écrire la date de l'action couper / coller sur chaque ligne concernée dans la colonne 5 (sur une des 2 feuilles ou sur les 2, selon ce qui est le plus simple). Pour ce point j'avais essayé avec la formule : MAINTENANT(), mais la date se remet à jour à chaque fois que je lance la macro, alors que je veux conserver la date de l'action.

J'espère que mes explications sont suffisamment claires.
Merci d'avance à ceux qui plancheront sur mon cas.
Expert Programmation

Ton idée de "Delete Shift:=xlUp" (Message pour KangOl: Moi aussi je veux une balise [ CODE ] inline :cry:  ) est excellente !

Il faut juste se demander sur quoi faire cette suppression :
  • Sur la cellule ? -> R.Delete ...
  • Sur la ligne ? -> R.Range(iR & ":" & iR).Delete ...


    Quant aux lignes vides, cf http://www.presence-pc.com/forum/ppc/Programmation/exce...


    MAINTENANT, essaie ce petit bout de programme là :
    1. Sub SuperMacroVachementInteressante
    2. MsgBox Now
    3. End Sub

    - Pour la supression des lignes tout va bien, sauf que, si 2 lignes successives ont la mention "validée" dans la colonne 6, seule la 1ère ligne et extraite de la feuille source puis coller dans la feuille "actions validées"

    - Pour atteindre la 1ère ligne vide de la feuille destinatrice, j'ai du faire un meli-melo car au lieu de coller dans la première ligne vide, la macro regarde quelle est la première ligne vide de la feuille source (par exemple ligne 25) et colle dans la feuille destinatrice à la ligne 25 alors que la 1ère ligne vide est par ex. la 20.

    Voici le nouveau code

    1. Private Sub CommandButton1_Click()
    2. Dim iPR As Long
    3. Dim iAV As Long
    4. Dim PR As Worksheet
    5. Dim AV As Worksheet
    6.  
    7. Set PR = Worksheets("Préparation prochaine REVUE")
    8. Set AV = Worksheets("Actions validées")
    9.  
    10. iAV = Range("A16").End(xlDown).Row + 1
    11.  
    12. For iPR = 17 To 65536
    13. If PR.Cells(iPR, 6).Text = "V - Validé" Then
    14. PR.Range(iPR & ":" & iPR).Cut AV.Cells(iAV, 1)
    15. PR.Range(iPR & ":" & iPR).Delete Shift:=xlUp
    16. iAV = iAV + 1
    17. End If
    18. Next
    19. End Sub


    Pour le dernier point cité, la macro que tu me proposes me donne la date et heure à laquelle je lance la macro, mais ne me permet pas la saisie automatique (colonne 5) de la date sur chaque ligne qui a été basculée dans la feuille destinatrice.
    Expert Programmation

    Citation :
    - Pour la supression des lignes tout va bien, sauf que, si 2 lignes successives ont la mention "validée" dans la colonne 6, seule la 1ère ligne et extraite de la feuille source puis coller dans la feuille "actions validées"
    Rhooo, je suis désolé. J'ai honte de moi :(  L'explication et la soluce au même endroit que tout à l'heure : http://www.presence-pc.com/forum/ppc/Programmation/exce...


    Pour ton méli-mélo, c'est exactement ce qu'il faut faire. Bravo. (C'est ça, programmer ;)  ) Je suis fier de toi. Peut-être que préciser la feuille (AV.Range...) serait judicieux, ligne 10 ;) 


    Pour mettre une valeur dans une case, alors là, j'ai honte pour toi !!!! Tu ne sais pas mettre la valeur de New dans la case iAV x 5 ?
    Expert Programmation

    Pour ta suppresion, je te propose quelque chose d'autre. Remonter "à l'envers" comme dans le tuto est possible, mais pas très judicieux dans ton cas. Je te propose plutôt de marquer les lignes à supprimer puis de faire une seconde passe pour nettoyer :

    1. const A_SUPPRIMER = "D - A SUPPRIMER"
    2.  
    3. Application.ScreenUpdating = False
    4. ' // Copie
    5.  
    6. For iPR = 17 To 65536
    7. If PR.Cells(iPR, 6).Text = "V - Validé" Then
    8. PR.Range(iPR & ":" & iPR).Copy AV.Cells(iAV, 1)
    9. PR.Cells(iPR, 6).Value = A_SUPPRIMER
    10. PR.Cells(iPR, 6).Interior.ColorIndex = 3
    11. PR.Cells(iPR, 6).Font.ColorIndex = 6
    12. AV.Cells(iAV, 6).Value = "Validé le " & Date
    13. iAV = iAV + 1
    14. Application.StatusBar = "Copie: " & (iPR - 17) * 100 \ (65536 - 17) & "%"
    15. End If
    16. Next
    17.  
    18. ' // Admirer le travail :)
    19. Application.ScreenUpdating = True
    20. PR.Select
    21. Do While True
    22. If MsgBox("Alors, c'est biau ?", vbYesNo) = VbYes Then Exit Do
    23. Loop
    24. Application.ScreenUpdating = False
    25.  
    26. ' // Nettoyage - A l'envers :)
    27. For iPR = 65536 To 17 Step - 1
    28. If PR.Cells(iPR, 6).Text = A_SUPPRIMER Then
    29. PR.Range(iPR & ":" & iPR).Delete Shift:=xlUp
    30. Application.StatusBar = "Copie: " & (65536 - iPR + 17) * 100 \ (65536 - 17) & "%"
    31. End If
    32. Next
    33. Application.StatusBar = False
    34. Application.ScreenUpdating = True

    Citation :

    Pour mettre une valeur dans une case, alors là, j'ai honte pour toi !!!! Tu ne sais pas mettre la valeur de New dans la case iAV x 5 ?


    J'ai effectivement honte, mais je ne sais pas faire et je sais encore moins ce qu'est la valeur New. Mais rappelle toi, je débutante VBA

    Cela dit est-ce que ma question de départ était clair ou faut-il que je donne un ex. pour que tu puisses m'aider ?
    Expert Programmation

    Le code à suivre est maintenant disponible. :)  (Tu pourrais attendre que je finisse avant de fondre en larmes en te martellant la poitrine en criant "je suis débutante" :cry:  )

    Alors, lignes 3, 14, 19, 24, 30, 34, j'utilise deux fonctions que je te demande d'aller voir dans l'aide. C'est juste pour faire beau, et ça ne sert à rien, c'est donc indispensable :) 

    La valeur de New c'est la valeur que renvoie New. Pour la connaître, faire MsgBox New :o  (C'est pratique, c'est ce que tu cherches à faire.)

    Pour info, la valeur de la case iAV x 5 de la feuille AV s'écrit AV.Cells(iAV, 5).Value avec tes variables correctement positionnées. Il n'y a plus qu'à y mettre New dedans !!!!!!!

    Les lignes 18 à 24 sont évidemment inutiles.
    Pour le reste, essaie de bien tout comprendre.

    Désolée, j'ai répondu trop vite la fois précédente.
    Bon je viens d'intégrer le code que tu m'as transmis, mais j'ai une erreur d'exécution '1004' à ligne 9 de ton code.
    Est-ce que cela pourrait être du au fait que dans les cellules de la colonne 6 il y a une liste déroulante (crée à partir de Données / Validation / Liste)
    Cela dit j'ai essayé de changer de n° de colonne (la 7 étant vide) ou de rajouter "A_SUPPRIMER" dans la liste déroulante, j'ai toujours le même message d'erreur.
    As-tu une idée du type de problème ?

    Par hasard tu n'aurais pas vérouiller la feuille ?

    Sinon tu peux essayer de supprimer le .text et retesté.
    Essaie aussi de mettre la ligne 9 en commentaire voir si la ligne 10 passe.

    Sinon pour l'histoire de la date c'est bien la fonction now qu'il faut utiliser mais tu ne dois ajouter dans une cellule que si celle ci est vide.

    Il faut bien voir que mettre =maintenant() dans une cellule affecte une fonction qui est calculé à chaque ouverture/rafraichissement. Alors que mettre le résultat de now ( ou maintenant) renseigne le résultat qui sera fixe dans le temps.

    1. if cells(i,j) = "" then
    2. cells(i,j) = now 'affecte la date actu à la cellule
    3. end if

    Bonjour Freeman23,

    Merci pour le coup de main.
    J'ai effectivement supprimer .text ligne 8 + 28 et le .selection ligne 11, mais une fois que l'on répond oui à la Msgbox la macro ne continue pas. Les lignes copiées sur la feuille destinatrice ne sont donc pas supprimées dans la feuille source.
    J'ai essayé en supprimant les lignes 17 à 24 (MsgBox), mais le résultat est le même.
    Qu'est-ce que j'ai loupé ?
    Expert Programmation

    (Merci Freeman. Text est en effet en lecture seule pour un range. Je corrige et mets un Value à la place. Merci cafiniou, le Selection est un relicat de ton code lors d'un copier/coller, je le supprime. Il reste une erreur, j'ai oublié le Step -1 dans le for de la ligne 27. Corrigé.)

    Enjoy !

    :bounce:  MERCI, MERCI, MERCI
    Ca fonctionne et en plus c'est hypra rapide, fini les heures à passer pour faire la bascule des actions validées.

    Bon je continue sur ma lancée, car maintenant que j'ai vu l'intérêt des macros et que je commence à comprendre leur fonctionnement, je ne vais plus pouvoir m'en passer !!!! :pt1cable: 


    Et oui je lache pas si facilement !!! :D 

    J'ai finalement utilisé les lignes 18 à 25 pour confirmation et vérif avant validation.
    J'ai donc remplacer le bouton par un vbOKCancel, ce qui ne change rien en soit, mais j'aimerai que quand on clic sur Annuler on sorte directement de la Macro sans basculer les lignes.
    Et c'est là que je tourne en rond avec mon Else.
    Bref help me! :jap: 

    Tu supprimes la boucle do while de zeb le clown... :p  qui t'oblige à répondre oui, et tu obtient ceci
    1. If MsgBox("Alors, c'est mieux ?", vbOkCancel) = VbOk Then
    2. Application.ScreenUpdating = False
    3. ' // Nettoyage - A l'envers :)
    4. For iPR = 65536 To 17 Step - 1
    5. If PR.Cells(iPR, 6).Text = A_SUPPRIMER Then
    6. PR.Range(iPR & ":" & iPR).Delete Shift:=xlUp
    7. Application.StatusBar = "Copie: " & (65536 - iPR + 17) * 100 \ (65536 - 17) & "%"
    8. End If
    9. Next
    10. end if
    11. Application.StatusBar = False
    12. Application.ScreenUpdating = True

    Hello,

    je suis de retour après avoir fait vivre la macro et l'avoir adaptée à d'autres tableaux. Je me rend compte aujourd'hui, que les nouvelles lignes du tableau que j'ai écris ou que j'ai insérées (après la rédaction de la macro) ne sont pas prises en charge par la macro : c'est à dire qu'avant le message de confirmation, la macro ne mets pas dans la colonne 6 la constante CLOTURE

    Rappel du code :
    1. Private Sub CommandButton1_Click()
    2. Dim iEC As Long
    3. Dim iAV As Long
    4. Dim EC As Worksheet
    5. Dim AV As Worksheet
    6.  
    7. Set EC = Worksheets("Actions en cours")
    8. Set AV = Worksheets("Actions cloturées")
    9.  
    10. Const CLOTURE = "Action A BASCULER"
    11.  
    12. Application.ScreenUpdating = False
    13.  
    14. 'Copie des lignes où dans la colonne F est écrit Validé
    15. iAV = AV.Range("A1").End(xlDown).Row + 1
    16.  
    17. For iEC = 2 To 500
    18. If EC.Cells(iEC, 6).Text = "CLOTURE" Then
    19. EC.Range(Cells(iEC, 1), Cells(iEC, 5)).Copy AV.Cells(iAV, 1)
    20. EC.Cells(iEC, 7) = CLOTURE
    21. EC.Cells(iEC, 7).Interior.ColorIndex = 3
    22. EC.Cells(iEC, 7).Font.ColorIndex = 6
    23. iAV = iAV + 1
    24. Application.StatusBar = "Copie: " & (iEC - 2) * 100 \ (10000 - 2) & "%"
    25. End If
    26. Next
    27.  
    28. 'Message de confirmation avant la bascule :)
    29. Application.ScreenUpdating = True
    30. EC.Select
    31. If MsgBox("Souhaitez-vous que les actions clôturées soient supprimées de la feuille - Actions en cours - ?", vbOKCancel) = vbOK Then
    32. Application.ScreenUpdating = False
    33. 'Si le bouton ok est sélectionné : suppression à l'envers :) des lignes où dans la colonne G est marqué à basculer
    34. For iEC = 500 To 2 Step -1
    35. If EC.Cells(iEC, 7).Text = CLOTURE Then
    36. EC.Range(iEC & ":" & iEC).Delete Shift:=xlUp
    37. Application.StatusBar = "Copie: " & (10000 - iEC + 2) * 100 \ (10000 - 2) & "%"
    38. End If
    39. Next
    40. 'Si le bouton annuler est sélectionné : annulation de l'action et nettoyage de la colonne G de la feuille revue
    41. Else
    42. EC.Range("G2:G65536").ClearContents
    43. EC.Range("G2:G65536").Interior.ColorIndex = xlNone
    44. EC.Range("G2:G65536").Font.ColorIndex = 0
    45.  
    46. End If
    47.  
    48. 'Nettoyage du tableau de la feuille action validée
    49. AV.Range("F2:F210").ClearContents
    50. AV.Range("A2:F210").Interior.ColorIndex = xlNone
    51. AV.Range("A2:F210").Font.ColorIndex = 0
    52. AV.Range("A2:F210").FormatConditions.Delete
    53. Application.StatusBar = False
    54. Application.ScreenUpdating = True
    55.  
    56.  
    57. End Sub

    A+
    Expert Programmation

    Ligne 18, tu compares la cellule (iEC,6) avec "CLOTURE" (la phrase "CLOTURE" ) et non pas CLOTURE (la variable CLOTURE qui contient la phrase "Action A BASCULER")

    Est-ce ton problème ?

    Citation :
    Est-ce ton problème ?


    Non et c'est pire que çà ! Je suis même honteuse de t'avoir fait chercher un problème là où il n'y a qu'une étourderie de ma part.
    Méa culpa.
    J'ai mis dans la colonne 6 une formule qui détecte les actions clôturées selon une condition, qui si elle est vrai, me permet d'écrire le mot "CLOTURE" dans la colonne.
    En ajoutant de nouvelles lignes, j'ai simplement oublié de copier la formule. Espèce de tâche que je suis !!!
    Désolée pour le dérangement ! :whistle: 

    cafiniou13 a dit :
    Bon j'avoue ne pas tout avoir compris, mais j'ai découvert des choses intéressantes.
    Désolée, mais je vais encore posée une question digne d'un grand débutant des forums (mais c'est aussi le cas) : je veux bien utiliser la balise [code], mais comment tu fais ?
    STP ne baisse pas les bras en lisant ce message, je suis sûre qu'une fois que je serai mise sur les rails je devrai y arriver.
    Cela fait plusieurs jours que je lis les macros des autres pour essayer de comprendre l'esprit du VBA (uniquement dans le cadre de mon exemple, pour l'instant).
    NB : j'ai d'ailleurs remarqué que tu répondais souvent et assidument aux débutants VBA


    Je suis dans ton cas, je débute et je découvre complétement tout ça. Je souhaite faire en feuille 1"formulaire" un formulaire d'une ligne avec un bouton Valider. lorsque je validerais je veux envoyer tout le contenu de ma ligne B (oui ligne A, j'ai mis les titres de mes colonnes) sur la ligne B de la feuille 2"récapitulatif" je valide ça part bien dans ma ligne B de la feuille 2, mais lorsque je rentre d'autre info feuille 1 ça m'éfface ma saisie précédente sur la feuille 2. Que dois je faire ? '
    Range("A2:N2").Select
    Selection.Copy
    Sheets("Feuil2").Select
    Range("A2").Select
    ActiveSheet.Paste
    Range("A3").Select
    Sheets("Feuil1").Select
    Application.CutCopyMode = False
    Selection.ClearContents
    End Sub

    christine

    zeb a dit :
    Ta question est effectivement simple et digne d'un très grand débutant !
    (C'est un état qui ne dure pas et par lequel nous sommes tous passés)

    Cela ne m'ennuye pas de répondre aux gens de bonne volonté.
    (Pour prouver ta bonne volonté, s'il en était besoin, utilise la balise [code] pour présenter même deux lignes)

    Avant de te répondre, j'aimerais que tu mettes ton curseur sur le mot Dim, que tu appuyes sur [F1] et que tu lises TOUT ce qui s'affiche ;) 

    A te lire.


    Bjr,
    Apparement les débutants ne te font pas peur... J'en suis une. Donc question.
    je veux monter un formulaire pour répertorier des appels téléphonique, donc feuille 1 un formulaire et lorsque je validerai les données iront sur la feuille 2 récapitulatif.
    feuille 1, ligne 1 titre de mes colonnes sur 10 colonnes.
    Je rentre mes données elles partent bien ligne 2 de la feuille 2, mais lorsque je remplis a nouveau mon formulaire et que je valide ça m'éfface ma ligne précédemment rentrée sur la feuille2. Que dois je faire ?

    christine
    Expert Programmation

    Bonjour, Je n'ai pas peur des débutants.

    Mais sur un forum, ce qui est important, c'est de savoir lire. Et cela m'inquiète :
    Citation :
    utilise la balise [code] pour présenter même deux lignes
    C'est pourtant clair !

    Comme le prouve cet autre message, je suis schizophrène et ne passe en mode gentil Jekyll-Helper que quand le méchant modérateur-Hide n'a plus rien à dire....

    [:zeb:4]

    bjr,
    Dslée je ne la trouve pas, qu'est ce qu'une balise ? lorsque je dis débutante je pèse mes mots.... donc désolée de te faire répeter ou de réclamer encore plus. Donc j'ai beau lire et relire je ne trouve pas ton truc code ? merci encore
    christine
    Lassé par la pub ? Créez un compte