Copier le contenu d'une ligne dans une colonne/VBA

Fermé
wakafa Messages postés 40 Date d'inscription mercredi 22 juillet 2015 Statut Membre Dernière intervention 7 décembre 2020 - Modifié par wakafa le 22/07/2015 à 13:29
wakafa Messages postés 40 Date d'inscription mercredi 22 juillet 2015 Statut Membre Dernière intervention 7 décembre 2020 - 23 juil. 2015 à 12:51
En fait je suis débutante en VBA et j'ai vraiment besoin de votre aide. bn mn pb c ke je dois copier le contenu d'une ligne de cumul d'une feuil1 dans la 2éme colonne d'une autre feuille sachant que les 6 premières cases de la ligne à copier sont vides alors que je dois recopier le contenu à partir de la 2éme case de la colonne.
SVP aidez moi c urgent et merci d'avance
A voir également:

9 réponses

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
22 juil. 2015 à 14:19
Bonjour Wakafa, bonjour le forum,

Tu fournis tellement peu d'indications que le code ci-dessous est à réécrire en l'adaptant à ton cas :

Sub Macro1()
Dim O1 As Worksheet 'déclare la variable O1 (Onglet 1)
Dim O2 As Worksheet 'déclare la variable O2 (Onglet 2)
Dim LI As Integer 'déclare la variable LI (LIgne)
Dim COL As Integer 'déclare la variable COL (COLonne)
Dim TC As Variant 'déclare la variable TC (Tableau de cellules)

Set O1 = Sheets("Feuil1") 'définit l'onglet O1 (à adapter)
Set O2 = Sheets("Feuil2") 'définit l'onglet O2 (à adapter)
LI = 9 'définit la ligne LI des données à copier (à adapter)
COL = 2 'définit la colonne COL où sont collées les données (à adapter)
'définit la tableau de cellules TC contenant les données
TC = O1.Range(O1.Cells(9, 6), O1.Cells(9, Application.Columns.Count).End(xlToLeft))
'renvoie dans la cellule ligne 2, colonne COL de l'onglet O2, le tableau de cellulles TC transposé
O2.Cells(2, COL).Resize(UBound(TC, 2), 1) = Application.Transpose(TC)
End Sub

0
wakafa Messages postés 40 Date d'inscription mercredi 22 juillet 2015 Statut Membre Dernière intervention 7 décembre 2020
22 juil. 2015 à 20:37
Bonjour ThauTheme,
Merci beaucoup pour votre réponse aussi rapide, bon j'ai essayé d'adapter votre code à ma situation mais j'ai pas obtenu de résultat, comme tu as déjà dit peut être j'ai fournis peu d'indications. Pour ceci je vais détailler un peu plus on fait je veux que la ligne 330 de la feuil1 alimente la 2éme colonne de la feuille "CAUSES" dont la 1ére colonne est déja remplie et ceci pour que mon graphe puisse être changé une fois les données changent.sachant que ,comme j'ai déja mentionné, la ligne 330 n'est remplie qu'à partir de la 7ème case et la colonne à remplir commence de la 2éme case
Merci Infiniment ThauTheme
0
wakafa Messages postés 40 Date d'inscription mercredi 22 juillet 2015 Statut Membre Dernière intervention 7 décembre 2020
22 juil. 2015 à 21:12
Mercii ThauTheme c'est résolu, j'avais une petite erreur ^^
0
wakafa Messages postés 40 Date d'inscription mercredi 22 juillet 2015 Statut Membre Dernière intervention 7 décembre 2020
22 juil. 2015 à 21:21
j'ai un petit problème, la ligne c'est une ligne de Cumul donc ses valeurs changent de temps à l'autre, mais j'ai remarquer que lorsque ces valeurs changent celles de la colonne ne changent pas
Merci ThauTheme et désolé pour le dérangement
0

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

Posez votre question
wakafa Messages postés 40 Date d'inscription mercredi 22 juillet 2015 Statut Membre Dernière intervention 7 décembre 2020
Modifié par wakafa le 22/07/2015 à 22:01
je dois à chaque fois cliquer sur exécuter les macros pour que ça fonctionne, alors que je veux que la saisie soit automatique, en modifiant la ligne Cumul la colonne se modifie automatiquement sans ouvrir les macros
Merci
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
Modifié par ThauTheme le 23/07/2015 à 09:17
Bonjour Wafaka, bonjour le forum,
  • Copie le code ci-dessous
  • Clique avec le bouton droit dans le premier onglet (en bas) et choisis l'option Visualiser le code
  • Dans la grande partie en haut à droite, colle le code
  • Enregistre

La modification se fait désormais de manière automatique à l'aide la procédure événementielle Change, chaque fois que tu modifies une cellule de la ligne 330...

Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim LI As Integer 'déclare la variable LI (LIgne)
Dim TC As Variant 'déclare la variable TC (Tableau de cellules)

If Target.Row <> 330 Then Exit Sub 'si le changement a lieu ailleurs que dans la ligne 330, sort de la procédure
LI = Target.Row 'définit la ligne LI
Set O = Sheets("CAUSES") 'définit l'onglet O
'efface les anciennes données de la colonne 2 (=B) de l'onglet O (à partir de la ligne 2)
O.Range(O.Cells(2, 2), O.Cells(Application.Rows.Count, 2).End(xlUp)).ClearContents
'définit la tableau de cellules TC contenant les données
TC = Range(Cells(LI, 7), Cells(LI, Application.Columns.Count).End(xlToLeft))
'renvoie dans la cellule B2 de l'onglet O, le tableau de cellulles TC transposé
O.Cells(2, 2).Resize(UBound(TC, 2), 1) = Application.Transpose(TC)
End Sub


À plus,
ThauTheme
0
wakafa Messages postés 40 Date d'inscription mercredi 22 juillet 2015 Statut Membre Dernière intervention 7 décembre 2020
23 juil. 2015 à 10:52
Bonjour ThauTheme,
Encore Merci de l'intérêt apporté à mon problème
Malheureusement en faisant ceci ça donne pas résultat, mais en collant le code sur la partie sub Command-bouton() la colonne change en cliquant sur ce bouton, mais le problème c'est que je dois l'exécuter deux fois pour que les dernières informations ajoutés s'affichent, je pense que c'est un problème de mise à jours ou quoi!!
Merci
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
23 juil. 2015 à 11:48
Re,

En refaisant des tests je me suis rendu compte que ça plantait quand la ligne ne contenait qu'une seule valeur. Voici le code modifié et un fichier exemple en pièce jointe...

Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim LI As Integer 'déclare la variable LI (LIgne)
Dim TC As Variant 'déclare la variable TC (Tableau de cellules)

If Target.Row <> 330 Then Exit Sub 'si le changement a lieu ailleurs que dans la ligne 330, sort de la procédure
LI = Target.Row 'définit la ligne LI
Set O = Sheets("CAUSES") 'définit l'onglet O
'efface les anciennes données de la colonne 2 (=B) de l'onglet O (à partir de la ligne 2)
O.Range(O.Cells(2, 2), O.Cells(Application.Rows.Count, 2).End(xlUp)).ClearContents
'définit la tableau de cellules TC contenant les données
TC = Range(Cells(LI, 7), Cells(LI, Application.Columns.Count).End(xlToLeft))
'renvoie dans la cellule B2 de l'onglet O, le tableau de cellulles TC transposé
On Error Resume Next 'gestion des erreur (en cas d'erreur passe à la ligne suivante
'renvoie dans B2 de l'ontlet O le tableau TC transposé
O.Cells(2, 2).Resize(UBound(TC, 2), 1) = Application.Transpose(TC) 'génère une erreur si le tableau ne contient qu'une seule valeur
If Err <> 0 Then 'condition : si une erreur a été générée
    Err.Clear 'efface l'erreur
    O.Cells(2, 2).Value = Rows(LI).Find("*").Value 'copie l'unique valeur trouvée de la ligne dans la cellule B2 de l'onglet O
End If 'fin de l condition
End Sub


le fichier
0
wakafa Messages postés 40 Date d'inscription mercredi 22 juillet 2015 Statut Membre Dernière intervention 7 décembre 2020
23 juil. 2015 à 12:51
Merci infiniment ThauTheme :)
0