salut
comment peut on dupliquer une ligne d'une feuille execel avec la possibilie de modifier la valeur d'une cellule (dupliquer tous les valeur des cellules sauf une qui va recevoir une nouvelle valeur )?
Version imprimable
salut
comment peut on dupliquer une ligne d'une feuille execel avec la possibilie de modifier la valeur d'une cellule (dupliquer tous les valeur des cellules sauf une qui va recevoir une nouvelle valeur )?
La réponse est dans la question : Tu copies/colles et tu remplaces la valeur dans la cellule qui va bien :roll:
Mais je pense que ça ne répond pas à ta question qui ne doit pas poser le bon problème ;)
c'est juste,est ce je peut copier une ligne dans dans la ligne qui la precede sans ecraser le contenue de cette derniere?
bonjour,
Ta question n'est pas très claire... Je suppose que tu veux copier une ligne et la coller soit au dessus soit en dessous.
Si oui....
le fait de copier une ligne ne l'efface pas
Le fait de la copier sur une autre ligne écrase la ligne de destination.
Et enfin, pour résoudre ces problèmes, rien de tel que de faire des essais sur un classeur de test en s'aidant de la touche F1.
Et pour connaitre le code en VBA tu à l'éditeur de Macro, ainsi pour ta question c'est ce que j'ai utilisé et voici le résultat.
A+Code:
1
2
3
4
5
6
7
8 Sub Macro1() 'Copie la ligne 6 et la colle sur la ligne 7 Rows("6:6").Select Application.CutCopyMode = False Selection.Copy Rows("7:7").Select ActiveSheet.Paste End Sub
BonjourCitation:
Envoyé par k_boy
Effectivement, ce n'est pas très clair.
Si j'ai compris :
1 - Tu as dans une ligne une cellule avec dedans "TOTO"
2 - Sur une autre ligne tu as une cellule avec dedans "TITI"
3 - Tu veux copier la cellule de la derniére ligne dans la premiére sans effacer la donnée de la première pour avoir "TOTO TITI"
Est-ce exact ?
Starec
ce n'est pas exactement comme sa
1-j'ai une ligne avec une cellule qui contient "14/08/2007"
2-je veut crée 03 ligne avec dans la même cellule une partie de la chaine precedent (la premiere ligne contient le jour "14",la 2eme ligne contient le mois "08" ,la troisieme contient l'année "2007" )
j'ai fait le code suivant pour connaitre combient de foit je doit copier la ligne
Code:
1
2
3
4
5
6
7
8 cellule = Cells(i, 3) // la cellule qui contient la chaine à spliter tab = Split(cellule, "/") tab_long = UBound(tab) - LBound(tab) + 1 For j = 1 To tab_long // dupliquer la ligne //copie la j valeur du tableau dans la j ligne
Bonjour,
il y a 36 façon de faire cela, en voici une
A+Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 ' Si la cellule contient un texte ou date au format "12/05/2007" ' Splite la date et inscrit les 3 parties dans les 3 lignes suivantes ' et sur la même colonne Private Sub CouperDate() Dim L As Integer, C As Integer, i As Integer Dim cel As Range On Error GoTo Sortie L = ActiveCell.Row 'la ligne de la cellule C = ActiveCell.Column 'la colonne de la cellule If ActiveCell.Text = "" Then Exit Sub Set cel = Cells(L, C) tbl = Split(cel.Value, "/") If UBound(tbl) < 2 Then Exit Sub 'il n'y a pas les bonnes données Range(Cells(L + 1, C), Cells(L + 3, C)).Select 'Si la copie ne se fait pas 'juste au dessous, ajuster l'offset For Each cel In Selection cel.Value = tbl(i) i = i + 1 Next cel Sortie: End Sub
Toujours pas très clair pour moi.
Quand tu insères le jour, le mois, l'année dans tes nouvelles lignes,
1 - écrases-tu l'ancienne ligne contenant la date complète ?
2 - Insères-tu tes ligne en dessus ou en dessous de la ligne dupliquée ?
3 - dupliques-tu toute la ligne sauf la date ou simplement les éléments de la date ?
4 - combien de fois répétes-tu cette opération, chaque fois que tu as une date dans ta colonne date ou seulement une fois ?
5 - tes dates ont-elles toujours le même format ? jj/mm/aaaa ou le format peut-il changer ?
6 As-tu toujours des dates dans la colonne ?
Etc.
Déjà, si tu réponds à ces questions, on pourra te répondre plus précisément ;)
Ex : Si tu as plusieurs types de données possibles dans ta colonne, pour tester si une cellule contient une date, tu as
... sachant bien que je ne résouds pas ton pb :lol:Code:if isdate(cells(NoLigne,NoCol).value) then
1-oui l'ancienne ligne est ecraser pour apparaitre les nouvelles lignes
2-je duplique toute la ligne (identique à la ligne d'origine saufe pour la cellule cible)
3-je fais cette operation à chaque ligne
4-je doit preciser que la colone que je veut décomposer ne comporte pas la date mais des nombres separer par '\' ,j'ai juste pris la format de la date comme exemple:oops:
Alors nouvelles questions (que me fait poser le code proposé par LeForestier) :
Toutes les cellules de la colonne ont-elles plusieurs nombres séparés par "\" ?
Enfin as-tu des cellules vides ?
Juste pour t'éviter deux tests si inutiles.
Je réponds déjà non à la première question et oui à la seconde
Teste ce code et dis-nous
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 Dim NoLigne As Long, NoCol As Byte NoLigne = 2 'en supposant qu'il y ait un en-tête de colonne NoCol = 1 'à adapter, colonne dans laquelle se trouvent tes valeurs à diviser Do While Cells(NoLigne, NoCol).Value <> "" If InStr(Cells(NoLigne, NoCol).Value, "/") <> 0 Then Rows(NoLigne).Insert Shift:=xlDown 'Insertion d'une ligne vide Rows(NoLigne).Insert Shift:=xlDown 'Insertion d'une ligne vide 'Copie des lignes complètes Rows(NoLigne + 2).Copy Destination:=Range("A" & NoLigne + 1) Rows(NoLigne + 1).Copy Destination:=Range("A" & NoLigne) 'Séparation des données et affectation de chacune d'elles dans la bonne cellule Cells(NoLigne, NoCol).Value = _ Split(Cells(NoLigne, NoCol).Value, "/")(0) Cells(NoLigne + 1, NoCol).Value = _ Split(Cells(NoLigne + 1, NoCol).Value, "/")(1) Cells(NoLigne + 2, NoCol).Value = _ Split(Cells(NoLigne + 2, NoCol).Value, "/")(2) End If NoLigne = NoLigne + 3 'on passe à la ligne suivante, 3 ligne + bas Loop
ton code marche tres bien ,mais il affiche des erreur lorsque il y a qu'un seul separateur '/' dans la cellule.
et il n'ecrase pas la ligne originale.
NOTA:
1-il y a des cellules qui contienne plus de 02 separateurs
2-il y a des cellules qui contienne qu'un seul separateur
3-il y a des cellules vide