Macro Ajout de ligne

Consultat

XLDnaute Nouveau
Bonjour le forum,

sur une feuille excel, je possède 2 macros permettant l'ajout de ligne, l'un pour les produits, l'autre pour les charges. Cependant, une fois que j'ajoute une ligne pour les produits, cela décale mes charges situé en dessous. Par conséquent, lorsque je souhaite executer la macro pour ajouter une ligne pour mes charges, elle se trouve en décalé, auriez vous une solution ?

PHP:
Sub Ajoutligne()
'
' Ajoutligne Macro
' Macro enregistrée
    Worksheets("paramètre").Cells(22, 1).EntireRow.Insert
    Worksheets("Flash").Cells(11, 1).EntireRow.Insert
    Worksheets("paramètre").Range("B22") = InputBox("Veuillez saisir l'intitulé du produit")
    Sheets("Flash").Range("C11") = Sheets("paramètre").Range("B22")
    Sheets("paramètre").Range("R22") = Sheets("paramètre").Range("B22")
    
    Worksheets("Flash").Activate
    Range("E10:BQ10").Select
        Selection.Copy
    Range("E11:BQ11").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    
    
End Sub

PHP:
Sub Ajoutcharges()
'
' Ajoutcharges Macro
' Macro enregistrée 
'
    Worksheets("paramètre").Cells(31, 1).EntireRow.Insert
    Worksheets("Flash").Cells(19, 1).EntireRow.Insert
    Worksheets("paramètre").Range("B31") = InputBox("Veuillez saisir l'intitulé de la charge")
    Sheets("Flash").Range("C19") = Sheets("paramètre").Range("B30")
    Sheets("paramètre").Range("R31") = Sheets("paramètre").Range("B31")

    Worksheets("Flash").Activate
    Range("E18:BQ18").Select
        Selection.Copy
    Range("E19:BQ19").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False


End Sub

Merci,
bonne journée.
 

Caillou

XLDnaute Impliqué
Re : Macro Ajout de ligne

Bonjour,

Il faut utiliser des noms pour les cellules.
Pour nommer une cellule ou une plage : tu sélectionnes, puis Insertion/Nom/définir et tu donnes un nom (par exemple toto)
Comme ca quand tu inséres une ligne, le nom descend aussi

Dans ta macro, au lieu de Range("A31") par exemple tu mets Range("toto")


Caillou
PS : toto n'est pas un bon exemple de nom !!!
 

Consultat

XLDnaute Nouveau
Re : Macro Ajout de ligne

Bonjour,

Il faut utiliser des noms pour les cellules.
Pour nommer une cellule ou une plage : tu sélectionnes, puis Insertion/Nom/définir et tu donnes un nom (par exemple toto)
Comme ca quand tu inséres une ligne, le nom descend aussi

Dans ta macro, au lieu de Range("A31") par exemple tu mets Range("toto")


Caillou
PS : toto n'est pas un bon exemple de nom !!!

Pour le décalage je suis d'accord, je sélectionne la ligne 31 et je lui donnne un nom...
Par contre, l'intitulé que je rentre doit se positionner en B31, or avec le décalage sa fausse tout. Peut être un B"toto" ;)
 

Consultat

XLDnaute Nouveau
Re : Macro Ajout de ligne

PHP:
Sub Ajoutcharges()
'
' Ajoutcharges Macro
' Macro 
'
    Worksheets("paramètre").Range("toto").EntireRow.Insert
    Worksheets("Flash").Cells(18, 1).EntireRow.Insert
    Worksheets("paramètre").Range("B30") = InputBox("Veuillez saisir l'intitulé de la charge")
    Sheets("Flash").Range("C19") = Sheets("paramètre").Range("B30")
    Sheets("paramètre").Range("R30") = Sheets("paramètre").Range("B30")

    Worksheets("Flash").Activate
    Range("E18:BQ18").Select
        Selection.Copy
    Range("E19:BQ19").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False


End Sub

Voila selon ta modification: En effet, après avoir définit un nom à la ligne 30 (toto), lors de l'ajout de la ligne, cela est bien pris en compte.
Cependant, l'intitulé inscrit en B30 et retranscrit en R30 et C19 ne fonctionne plus.
 
Dernière édition:

Consultat

XLDnaute Nouveau
Re : Macro Ajout de ligne

Oui, je joint la partie qui nous intéresse.
Le problème est le décalage, l'ajout d'une ligne avec la première macro, entraine un problème de ligne lors du lancement de la deuxieme macro.

Pour t'en rendre compte, créer 2 produits (1er macro) puis lance la seconde macro (ajouter une charge).
 
Dernière édition:

Caillou

XLDnaute Impliqué
Re : Macro Ajout de ligne

Re,

Il te faut plusieurs noms (1 sur paramètre et 1 sur flash) pour identifier la ligne ou tu veux insérer une charges
ensuite le mieux c'est que la macro insére la ligne juste en dessous du nom
le code doit ressembler à ceci :
Code:
Worksheets("Flash").Range("toto").Offset(1,0).EntireRow.Insert
au lieu de :
Code:
Worksheets("Flash").Cells(18, 1).EntireRow.Insert

désolé : pas testé

Caillou
 

Consultat

XLDnaute Nouveau
Re : Macro Ajout de ligne

Bon a première vue, une partie du problème est rêglé !

PHP:
    Worksheets("paramètre").Range("paramchg").Offset(1, 0).EntireRow.Insert
    Worksheets("flash").Range("flashchg").Offset(1, 0).EntireRow.Insert

Cela ajoute en effet une ligne sous la ligne définit par "paramchg" et "flashchg".

PHP:
Worksheets("Flash").Activate
    Range("flashchg").Select
        Selection.Copy
    Range("flashchg").Offset(1, 0).Select
    ActiveSheet.Paste
    Application.CutCopyMode = False

Cela aussi fonctionne, donc il y a bien copie des éléments

Malheureusement, il reste une partie ou je bloque:
PHP:
    Sheets("Flash").Range("C19") = Sheets("paramètre").Range("B30") 
    Sheets("paramètre").Range("R30") = Sheets("paramètre").Range("B30")

En utilisant les C19 B30 et compagnie, cela ne prend pas en compte l'ajout de ligne produit éventuel.

Il faudrait surement quelque chose du genre:

Sheets("Flash").Range("C;flashchg").Offset(1, 0)= Sheets("paramètre").Range("B;paramchg").Offset(1, 0)

En gros, indiquer que la la cellule B en dessous du nom paramchg doit être égal à la cellule C situé en dessous de la ligné nommé flashchg

J'espère je suis clair.
 

Caillou

XLDnaute Impliqué
Re : Macro Ajout de ligne

En gros, indiquer que la la cellule B en dessous du nom paramchg doit être égal à la cellule C situé en dessous de la ligné nommé flashchg

Si j'ai bien compris, le code soit ressembler à ceci :

Code:
Sheets("Flash").Range("C" & Range("flashchg").Row).Offset(1, 0) = _
 Sheets("paramètre").Range("B" & Range("paramchg").Row).Offset(1, 0)

Caillou
 

Consultat

XLDnaute Nouveau
Re : Macro Ajout de ligne

En effet, cela marche. Merci à toi pour ton aide ! :cool:

PHP:
Sub Ajoutcharges()
'
' Ajoutcharges Macro
' Macro 
'
    Worksheets("paramètre").Range("paramchg").Offset(1, 0).EntireRow.Insert
    Worksheets("flash").Range("flashchg").Offset(1, 0).EntireRow.Insert
    Sheets("paramètre").Range("B" & Range("paramchg").Row).Offset(1, 0) = InputBox("Veuillez saisir l'intitulé de la charge")

    Sheets("Flash").Range("C" & Range("flashchg").Row).Offset(1, 0) = Sheets("paramètre").Range("B" & Range("paramchg").Row).Offset(1, 0)
    Sheets("paramètre").Range("R" & Range("paramchg").Row).Offset(1, 0) = Sheets("paramètre").Range("B" & Range("paramchg").Row).Offset(1, 0)

Worksheets("Flash").Activate
    Range("flashchg").Select
        Selection.Copy
    Range("flashchg").Offset(1, 0).Select
    ActiveSheet.Paste
    Application.CutCopyMode = False

End Sub
 

Discussions similaires

Réponses
3
Affichages
607

Statistiques des forums

Discussions
312 493
Messages
2 088 955
Membres
103 989
dernier inscrit
jralonso