Pb Macro sous Excel

Résolu/Fermé
jcandelibes Messages postés 91 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 4 juillet 2014 - 27 oct. 2010 à 09:52
jcandelibes Messages postés 91 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 4 juillet 2014 - 27 oct. 2010 à 12:49
Bonjour,

J'ai un tableau de suivi des entrées et sorties de matériel par références. Le nombre de ligne commence à être conséquent donc j'ai décidé de faire une feuille de saisie de données puis à l'aide de la fonction macro, je fais un "copier/coller" de la saisie dans le tableau.

Jusque là, rien de bien compliqué sauf qu'à chaque fois que je saisie une nouvelle entrée ou sortie, Excel efface la ligne que j'ai inscrite auparavant.

Je n'arrive pas à mettre ma nouvelle saisie à la suite des autres.

Comment faire pour que la macro me rajoute mes saisie les unes sous les autres.

Je débute dans la fonction macro.

A voir également:

4 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
Modifié par pijaku le 27/10/2010 à 10:10
Bonjour,
Pour répondre complètement à ta question, tu devrais nous placer ici le code de ta macro.
Normalement la copie se fait par :

Sheets("Feuil1").Range(gnagna).Copy
Et le collage par :
Sheets("Feuil2").Range(bidule).Paste
Si ton Range(bidule) est fixe, du genre Range("A2"), alors effectivement le collage se fera toujours au même endroit et effacera les données déjà enregistrées. Pour cela, il convient, par exemple, de coller sur la première ligne vide. Une méthode :
Dim PremiereLigneVide As Integer 
PremiereLigneVide = Sheets("Feuil2").Range("A65536").End(xlUp).Offset(1, 0).Row 
Sheets("Feuil2").Range("A" & PremiereLigneVide).Paste


Il ne s'agit là que d'un exemple à adapter à ta situation. reviens avec ton code et nous t'aiderons à le mettre en place...

Cordialement,
-- Il n'y a rien de tel qu'une question idiote, seulement une réponse idiote. A.Einstein --
0
jcandelibes Messages postés 91 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 4 juillet 2014 71
27 oct. 2010 à 10:29
Bonjour,

Voici le code de ma macro.

Sub macroajout1()
'
' macroajout1 Macro
''
   <code> Rows("159:159").Select
    Selection.Insert Shift:=xlDown
    Range("B159").Select
    Sheets("Feuil1").Select
    Range("B3:G3").Select
    Selection.Copy
    Sheets("entree sortie").Select
    Range("B159").Select
    ActiveSheet.Paste
    Range("H158").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("H159").Select
    ActiveSheet.Paste
    Range("B159:H159").Select
    Application.CutCopyMode = False
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
    Range("B161").Select
End Sub

</code>
Cordialement
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
Modifié par pijaku le 27/10/2010 à 11:08
Ta macro n'efface pas les données. Elle insère une ligne (159) puis copie/colle les données dans cette ligne. Si tu veux copier/coller tes lignes les unes sous les autres :
Sub macroajout1() 
Dim derlig As Integer 
With Sheets("entree sortie") 
    derlig = .Range("B65536").End(xlUp).Offset(1, 0).Row 
End With 
With Sheets("Feuil1") 
    .Range("B3:G3").Copy 
end With 
With Sheets("entree sortie") 
    .Range("B" & derlig).Select 
    ActiveSheet.Paste 
    .Range("H" & derlig).Value = .Range("B" & derlig).Offset(-1, 0).Value 
    .Range(Cells(derlig, 2),Cells(derlig, 8)).Select 
End With 
    Application.CutCopyMode = False 
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone 
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone 
    With Selection.Borders(xlEdgeLeft) 
        .LineStyle = xlContinuous 
        .ColorIndex = 0 
        .TintAndShade = 0 
        .Weight = xlMedium 
    End With 
    With Selection.Borders(xlEdgeTop) 
        .LineStyle = xlContinuous 
        .ColorIndex = 0 
        .TintAndShade = 0 
        .Weight = xlMedium 
    End With 
    With Selection.Borders(xlEdgeBottom) 
        .LineStyle = xlContinuous 
        .ColorIndex = 0 
        .TintAndShade = 0 
        .Weight = xlMedium 
    End With 
    With Selection.Borders(xlEdgeRight) 
        .LineStyle = xlContinuous 
        .ColorIndex = 0 
        .TintAndShade = 0 
        .Weight = xlMedium 
    End With 
    With Selection.Borders(xlInsideVertical) 
        .LineStyle = xlContinuous 
        .ColorIndex = 0 
        .TintAndShade = 0 
        .Weight = xlThin 
    End With 
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone 
 End Sub


Teste cette macro, car je viens de l'écrire ici dans la réponse et donc... pas testée!!
0
jcandelibes Messages postés 91 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 4 juillet 2014 71
27 oct. 2010 à 11:53
J'ai remplcé ta macro par la mienne et j'ai une erreur d'éxécution 1004 (La méthode Select de la classe Range a échoué)

Ca beug à partir de:

 .Range("B" & derlig).Select 
    ActiveSheet.Paste 
    .Range("H" & derlig).Value = .Range("B" & derlig).Offset(-1, 0).Value 
    .Range(Cells(derlig, 2),Cells(derlig, 8)).Select 
End With 
    Application.CutCopyMode = False 
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone 
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone 
    With Selection.Borders(xlEdgeLeft) 
        .LineStyle = xlContinuous 
        .ColorIndex = 0 
        .TintAndShade = 0 
        .Weight = xlMedium 
    End With 
    With Selection.Borders(xlEdgeTop) 
        .LineStyle = xlContinuous 
        .ColorIndex = 0 
        .TintAndShade = 0 
        .Weight = xlMedium 
    End With 
    With Selection.Borders(xlEdgeBottom) 
        .LineStyle = xlContinuous 
        .ColorIndex = 0 
        .TintAndShade = 0 
        .Weight = xlMedium 
    End With 
    With Selection.Borders(xlEdgeRight) 
        .LineStyle = xlContinuous 
        .ColorIndex = 0 
        .TintAndShade = 0 
        .Weight = xlMedium 
    End With 
    With Selection.Borders(xlInsideVertical) 
        .LineStyle = xlContinuous 
        .ColorIndex = 0 
        .TintAndShade = 0 
        .Weight = xlThin 
    End With 
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone 
 End Sub
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
Modifié par pijaku le 27/10/2010 à 12:00
bah oui. pas de select entre With et end with ... Je vais tester et je reviens...
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
27 oct. 2010 à 11:59
Essaye ceci :
Sub macroajout1()
Dim derlig As Integer
With Sheets("entree sortie")
    derlig = .Range("B65536").End(xlUp).Offset(1, 0).Row
End With
With Sheets("Feuil1")
    .Range("B3:G3").Copy Sheets("entree sortie").Range("B" & derlig)
End With
Sheets("entree sortie").Select
Range("H" & derlig).Value = Range("H" & derlig).Offset(-1, 0).Value
Range(Cells(derlig, 2), Cells(derlig, 8)).Select
Application.CutCopyMode = False 
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone 
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone 
    With Selection.Borders(xlEdgeLeft) 
        .LineStyle = xlContinuous 
        .ColorIndex = 0 
        .TintAndShade = 0 
        .Weight = xlMedium 
    End With 
    With Selection.Borders(xlEdgeTop) 
        .LineStyle = xlContinuous 
        .ColorIndex = 0 
        .TintAndShade = 0 
        .Weight = xlMedium 
    End With 
    With Selection.Borders(xlEdgeBottom) 
        .LineStyle = xlContinuous 
        .ColorIndex = 0 
        .TintAndShade = 0 
        .Weight = xlMedium 
    End With 
    With Selection.Borders(xlEdgeRight) 
        .LineStyle = xlContinuous 
        .ColorIndex = 0 
        .TintAndShade = 0 
        .Weight = xlMedium 
    End With 
    With Selection.Borders(xlInsideVertical) 
        .LineStyle = xlContinuous 
        .ColorIndex = 0 
        .TintAndShade = 0 
        .Weight = xlThin 
    End With 
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone 
 End Sub
0
jcandelibes Messages postés 91 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 4 juillet 2014 71
27 oct. 2010 à 12:49
Cool Ça marche

Merci beaucoup Pijaku
0