Inserer des lignes et copier des données entre deux tableaux automatiquement
bobbob83
Messages postés32Date d'inscriptionvendredi 27 juillet 2007StatutMembreDernière intervention22 novembre 2007
-
28 juil. 2007 à 14:25
bobbob83
Messages postés32Date d'inscriptionvendredi 27 juillet 2007StatutMembreDernière intervention22 novembre 2007
-
13 août 2007 à 23:57
Bonjour,
j'ai besoin d'un conseil pour inserer des lignes et copier des donner automatiquement
sur ma feuille de calcul j'ai deux tableaux l'un en dessous de l'autre séparés par des lignes vide
exemple :
Colonne A Colonne B
Ligne 1: Nombre de voiture 2
Ligne 2:
Ligne 3: Voiture 1 1 Tableau 1
Ligne 4: Voiture 2 2
Ligne 5:
Ligne 6:
Ligne 7: Vélo 1 1 Tableau 2
Ligne 8: Vélo 2 2
Ligne 9: Vélo 3 3
Ligne 10: Vélo 4 4
Ligne 11:
j'aimerais qu en changant le nombre en B2, des lignes se rajoutent ou se supriment en copiant les données (voiture 1,voiture 2.....) en meme temps et sans affecter le tableau du dessous
exemple : si a la place du 2 je saisie un 6 en B2 je voudrais obtenir le resultat suivant:
Colonne A Colonne B
Ligne 1: Nombre de voiture 6
Ligne 2:
Ligne 3: Voiture 1 1
Ligne 4: Voiture 2 2
Ligne 5: Voiture 3 3
Ligne 6: Voiture 4 4
Ligne 7: Voiture 5 5
Ligne 8: Voiture 6 6
Ligne 9:
Ligne 10:
Ligne 11: Vélo 1 1
Ligne 12: Vélo 2 2
Ligne 13: Vélo 3 3
Ligne 14: Vélo 4 4
Ligne 15:
Les lignes en rouge on été ajoutées et les données on été actualisées automatiquement :
a l'inverse si je reduis le nombre en B2 exemple: je tape 1
les lignes (en rose) s'effaces
Colonne A Colonne B
Ligne 1: Nombre de voiture 1
Ligne 2:
Ligne 3: Voiture 1 1
Ligne 4: Voiture 2 2
Ligne 5: Voiture 3 3
Ligne 6: Voiture 4 4
Ligne 7: Voiture 5 5
Ligne 8: Voiture 6 6
Ligne 4:
Ligne 5:
Ligne 6: Vélo 1 1
Ligne 7: Vélo 2 2
Ligne 8: Vélo 3 3
Ligne 9: Vélo 4 4
Ligne 10:
en resumé la cellule B2 doit determiner le nombre de ligne et actualiser les données en fonction du nombre saisie
j'espere avoir été clair dans mes explications,
pourriez vous me dire si cela est realisable et me conseiller sur la procedures
Merci d'avance
A voir également:
Inserer des lignes et copier des données entre deux tableaux automatiquement
bobbob83
Messages postés32Date d'inscriptionvendredi 27 juillet 2007StatutMembreDernière intervention22 novembre 2007 29 juil. 2007 à 23:23
bonsoir MPI, merci d'avoir répondu à mon message, je ne comprends pas tous les codes que tu as ecri car je suis débutant
l'evenement change () me permet defaire demarrer la macro via la cellule B2
Rows(i) c le code pour inserer ou effacer les lignes
La boucle for next ça me donne le nombre de ligne
mais pour que les données s actualisent automatiquement quel code dois je marquer dans la macro ?
bobbob83
Messages postés32Date d'inscriptionvendredi 27 juillet 2007StatutMembreDernière intervention22 novembre 2007 30 juil. 2007 à 13:55
bonjour,
j'ai lu l'aide excel de la commande evenement change ça donne cela
Cet événement se produit lorsque les cellules de la feuille de calcul sont modifiées par l'utilisateur ou par un lien externe.
Syntaxe
PrivateSubWorksheet_Change(ByValTargetAsRange)
Target La plage modifiée. Il peut s'agir de plusieurs cellules.
Remarques
Cet événement ne se produit pas lorsque les cellules sont modifiées par un recalcul. Utilisez l'événement Calculate pour piéger le recalcul d'une feuille de calcul.
La suppression de cellules ne déclenche pas cet événement.
mais je ne sais pas comment l'utiliser
comment faire pour apliquer le code a la cellule B2 ?????
que dois je mettre pour la valeur target ?
bobob83
Vous n’avez pas trouvé la réponse que vous recherchez ?
tubafat
Messages postés79Date d'inscriptionlundi 17 juillet 2006StatutMembreDernière intervention25 septembre 2007 30 juil. 2007 à 14:35
Salut,
Target est une variable définie par l'évènement change. Ce n'est donc pas à toi de "mettre une valeur".
Par exemple tu peux déjà tester si le cellule modifiée sur ta feuille est la B2 ou non:
Private Sub Worksheet_Change(ByVal Target As Range)
'Tester si la cellule modifiée est bien la cellule B2
If Target.Address(False, False) = "B2" Then
'Ta macro ici
End If
End Sub
bobbob83
Messages postés32Date d'inscriptionvendredi 27 juillet 2007StatutMembreDernière intervention22 novembre 2007 30 juil. 2007 à 19:03
Bonsoir Tubafat merci pour ta réponse
j'ai copier collé le code que tu m as donné
Private Sub Worksheet_Change(ByVal Target As Range)
'Tester si la cellule modifiée est bien la cellule B2
If Target.Address(False, False) = "B2" Then
'Ta macro ici
End If
End Sub
mais quand je lance la macro il y a une erreur de compilation End sub attendu
Pouquoi ?
je voulais teser avec se code pour mettre une couleur dans la cellule
Private Sub Worksheet_Change(ByVal Target As Range)
'Tester si la cellule modifiée est bien la cellule B2
If Target.Address(False, False) = "B2" Then
'Ta macro ici
Range("D10").Select
With Selection.Interior
.ColorIndex = 37
.Pattern = xlSolid
End With
End If
End Sub
dans le cas ou le code fonctionne comment faire pour que les cellules en dessous de D10 se colore en fonction du nobre saisie en B2
Exemple : si je saisie 2 en B2 les cellules D10 et D11 sont colorées
saisie 3 en B2 , les cellules D10 D11 D12 sont colorées
saisie 1 en B2 , la celulle D10 est coloré et les autres redeviennent blanche
quel code gere cette fonction ?
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 31 juil. 2007 à 03:30
Private Sub Worksheet_Change(ByVal Target As Range)
Dim I As Integer
If Target.Address(False, False) = "B2" Then
For I = 0 To Target.Value - 1
Range("D10").Offset(I, 0).Interior.ColorIndex = 37
'.............
Next
End If
End Sub
bobbob83
Messages postés32Date d'inscriptionvendredi 27 juillet 2007StatutMembreDernière intervention22 novembre 2007 31 juil. 2007 à 13:00
bonjour MPI
je n'arrive toujours pas a utiliser le code private sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim I As Integer
If Target.Address(False, False) = "B2" Then
For I = 0 To Target.Value - 1
Range("D10").Offset(I, 0).Interior.ColorIndex = 37
'.............
Next
End If
End Sub
J'ai copié collé le code dans le module1 mais rien ne se passe quand je modifie la cellule B2 aucune coloration des cellules
je fais peut etre une erreur de la coller dans le module general qu' en pense tu ?
tubafat
Messages postés79Date d'inscriptionlundi 17 juillet 2006StatutMembreDernière intervention25 septembre 2007 31 juil. 2007 à 15:28
Normal que rien se passe si tu l'as copié dans le module 1!
Private Sub Worksheet_Change est une macro qui se lance lors de la modification de la feuille.
Ta macro doit donc se trouver dans Feuil1 par exemple plutôt que dans module 1.
De part tes questions, j'ai l'impression que tu découvres complètement le VBA, je te conseillerais donc d'aller faire une petite recherche dans les tutoriaux mot clé "VBA".
Y a des trucs bien faits qui te permettront de comprendre un peu plus en qui consiste les macros.
bobbob83
Messages postés32Date d'inscriptionvendredi 27 juillet 2007StatutMembreDernière intervention22 novembre 2007 31 juil. 2007 à 20:50
bonsoir et merci pour tout jai commencé ma macro et j'ai réusie à integrer les votres mon codes et un peut etrange mais bon je suis débutant :)
dans feuil1 :
sheet_Change(ByVal Target As Range)
Dim I As Integer
If Target.Address(False, False) = "B2" Then
For I = 0 To Target.Value - 1
Range("D10").Offset(I, 0).Application.Run "Classeur1!Macro1"
'.............
Next
End If
End Sub
dans module 1 :
Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 31/07/2007 par POSTE09
'
deuxieme probleme si je reduit le chiffre en B2 = 1 la macro copie ine fois voiture en C14
mais elle ne devrais rien copier dutout effacer les ligne c10 c12 ......
pour que le nombre de ligne "voiture" corresponde a la valeur de B2
troisieme probleme
quand je rajoute le deuxieme tableau (les velo) la macro considere quel fais partie du tableau voiture et recopie la cellule C8 en dessous du tableau vélo alors quelle doit les copier entre les deux tableaux
voila c est parfait mais c est un bon debut pour une premier prog en vba
quand pensez vous soyez indulgant j'ai eu beaucoup de mal à faire se code meme si il est nul
bobbob83
Messages postés32Date d'inscriptionvendredi 27 juillet 2007StatutMembreDernière intervention22 novembre 2007 1 août 2007 à 19:59
bonsoir
Range("A1").End(xlDown).Offset(2, 0).Select
dans ce code est t il possible de remplacer le nombre 2 du "Offset(2,0)"
avec la valeur dune cellule ?
si la cellule A1 = 5 alors le offset égale (5,0)
Range("A1").End(xlDown).Offset(2, 0).Select
j'ai testé avec une instruction
i = A1
et
Offset(i,0)
bobbob83
Messages postés32Date d'inscriptionvendredi 27 juillet 2007StatutMembreDernière intervention22 novembre 2007 2 août 2007 à 12:25
bonjour
l'idée etait bonne mais le probleme c'est que je ne sais pas encore ecrire les codes correctement
c'est pour ça que je demande de l'aide, je comprends le code mais je sais pas le metrre en forme, je pense que le bouquin est une bonne solution, as tu des suggestions
pour le bouquin le quel dois je prendre ??
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 4 août 2007 à 18:09
N'importe lequel des bouquins pour débutant peut suffire.
L'important, c'est de bien apprendre la base.
Avec une bonne base, tu pourras penser à développer des applications intéressantes et bien montées.
bobbob83
Messages postés32Date d'inscriptionvendredi 27 juillet 2007StatutMembreDernière intervention22 novembre 2007 13 août 2007 à 23:57
bonsoir MPI
j'ai lu un bouquin
et j'ai fais quelques macros
dans feuil1 la macro evenement
Private Sub Worksheet_Change(ByVal Target As Range)
Dim I As Integer
If Target.Address(False, False) = "B2" Then
For I = 0 To Target.Value - 1
Range("D10").Offset(I, 0).Application.Run "Classeur2!Macro1"
Next
End If
End Sub
dans le module 1
la macro pour copier la cellule (b8 "voiture") selon la valeur de B2
Sub Macro1()
' Macro enregistrée le 31/07/2007 par POSTE09
'
ça marche mais mais ça me copie la cellule en dessous du tableau velo alors que ça devrai la copier entre les deux tableau, je n'arrive pas à trouver le bon code Meme avec le bouquin
une macro pour supprimer les lignes entre voiture et velo
Sub Macro7()
'
Dim I As Long
Dim Plage As Range
For x = 1 To 100
Set Plage = Range("B9:B" & Range("B9").End(xlDown).Row)
For I = Plage.Cells.Count To 1 Step -1
If Plage.Cells(I).Value <> velo Then
Plage.Cells(I).EntireRow.Delete
Exit For
End If
Next
Next x
'
End Sub
ce qui donne :
B8 voiture
B9 velo
ça c'est bon
il me manque une macro pour inserer des lignes entre le tableau avec la valeur de B2
mon idée c'est de lancer la macro 7 pour effacer les lignes puis lancer la macro (que je n'arrive pas à faire) pour inserer les lignes et lancer la macro 1 pour copier la cellule voiture
j'avoue que la je seche c beaucoup de boulot pour pas grand chose, c compliqué de copier des cellules entre deux lignes sous excel pourtant je demande pas la lune
ma prochaine action sera d'acheter un autre bouquin car celui la etait bof
je continu a plancher dessus courrage !