Aide pour macro excell
pipo
-
lermite222 Messages postés 9042 Statut Contributeur -
lermite222 Messages postés 9042 Statut Contributeur -
Bonjour,
J'ai réussit a faire fonctionner une macro pour tranférer une cellule d'une 1er page sur une 2 em page et que su j'inscrit une nouvelle saisie dans cette cellule il me la transfère sur la 2 em page aussi, mais une colonne a coté a chaque que je fais une nouvelle saisie sur une cellule de la 1er page
Mon problème est que je ne veux pas seulement tranféré les saisies de nombre, mais aussi des résultats de formule comme add et soustraction
je pourrais faire des référence de cellule sur la 2 em feuille (sa fonctionne) mais mon tableau est infiniment grand et trop complexe a faire tout ces références
voici ma macro utilisé :
Const F2 = "Compilation", F1 = "Analyse"
Const pls = 1 'première ligne de saisie dans la feuille 1
Const dls = 5 'dernière ligne de saisie dans la feuille 1
Const cols = 1 'colonne de saisie dans le feuille 1 (1 pour colonne A)
Const pld = 1 '1ère ligne à renseigner dans la feuille 2
'par exemple si lign_dep = 3, la ligne 3 de la feuille 2 correspondra à la
'la ligne pls de la feuille A
Const cold = 1 '1ère colonne à renseigner dans la feuille 2 (3 pour C)
'La macro se déclanche à chaque saisie dans la colonne A de la Feuille 1
Private Sub Worksheet_Change(ByVal Target As Range)
'
ligne = Target.Row ' ligne de la cellule où on vient d'effectuer une saisie
If ligne < pls Or ligne > dls Then Exit Sub 'test si le ligne est entre pls et dls
colonne = Target.Column ' colonne dans la quelle on vien d'effectuer une saisie
If colonne <> cols Then Exit Sub 'si la colonne est différente de la colonne
'définie pour la saisie dans les constantes on sort de la macro
'
'si la première colonne de destination est vide, on la remplit
If Sheets(F2).Cells(ligne - pls + pld, cold) = Empty Then col_cop = cold: GoTo copie_cellule
'
'on va rechercher dans la feuille 2 la première cellule vide
'après les saisies précédentes
For n = cold To 255: test = Sheets("Analyse").Range("A1"): If Sheets(F2).Cells(ligne - pls + pld, n) = Empty Then col_cop = n: Exit For
Next
'
copie_cellule: ' on reporte la valeur saisie dans la feuille 1 vers la nouvelle cellule de la feuille 2
Sheets(F2).Cells(ligne - pls + pld, col_cop) = Sheets(F1).Cells(ligne, cols)
End Sub
merci pour vos judicieux conseil pipo !!!!!
J'ai réussit a faire fonctionner une macro pour tranférer une cellule d'une 1er page sur une 2 em page et que su j'inscrit une nouvelle saisie dans cette cellule il me la transfère sur la 2 em page aussi, mais une colonne a coté a chaque que je fais une nouvelle saisie sur une cellule de la 1er page
Mon problème est que je ne veux pas seulement tranféré les saisies de nombre, mais aussi des résultats de formule comme add et soustraction
je pourrais faire des référence de cellule sur la 2 em feuille (sa fonctionne) mais mon tableau est infiniment grand et trop complexe a faire tout ces références
voici ma macro utilisé :
Const F2 = "Compilation", F1 = "Analyse"
Const pls = 1 'première ligne de saisie dans la feuille 1
Const dls = 5 'dernière ligne de saisie dans la feuille 1
Const cols = 1 'colonne de saisie dans le feuille 1 (1 pour colonne A)
Const pld = 1 '1ère ligne à renseigner dans la feuille 2
'par exemple si lign_dep = 3, la ligne 3 de la feuille 2 correspondra à la
'la ligne pls de la feuille A
Const cold = 1 '1ère colonne à renseigner dans la feuille 2 (3 pour C)
'La macro se déclanche à chaque saisie dans la colonne A de la Feuille 1
Private Sub Worksheet_Change(ByVal Target As Range)
'
ligne = Target.Row ' ligne de la cellule où on vient d'effectuer une saisie
If ligne < pls Or ligne > dls Then Exit Sub 'test si le ligne est entre pls et dls
colonne = Target.Column ' colonne dans la quelle on vien d'effectuer une saisie
If colonne <> cols Then Exit Sub 'si la colonne est différente de la colonne
'définie pour la saisie dans les constantes on sort de la macro
'
'si la première colonne de destination est vide, on la remplit
If Sheets(F2).Cells(ligne - pls + pld, cold) = Empty Then col_cop = cold: GoTo copie_cellule
'
'on va rechercher dans la feuille 2 la première cellule vide
'après les saisies précédentes
For n = cold To 255: test = Sheets("Analyse").Range("A1"): If Sheets(F2).Cells(ligne - pls + pld, n) = Empty Then col_cop = n: Exit For
Next
'
copie_cellule: ' on reporte la valeur saisie dans la feuille 1 vers la nouvelle cellule de la feuille 2
Sheets(F2).Cells(ligne - pls + pld, col_cop) = Sheets(F1).Cells(ligne, cols)
End Sub
merci pour vos judicieux conseil pipo !!!!!
A voir également:
- Aide pour macro excell
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Liste déroulante excell - Guide
- Macro maker - Télécharger - Divers Utilitaires
4 réponses
Bonjour,
Tu doit mettre tes constances dans un module général, ex: Module1
Pour éviter ce genre de problème met au dessus de chaque module, feuille et général
Option Explicit.
A+
Tu doit mettre tes constances dans un module général, ex: Module1
Pour éviter ce genre de problème met au dessus de chaque module, feuille et général
Option Explicit.
A+
est ce que tu aurais une idée plus clair pour éclairer ma lenterne dans ton cheminement pour que je puisse transféré un résultat obtenue a partir d'une équation sana en faire la saisie,,, tout en transposant le résultat sur une page différent et que a chaque nouvelle information dans la cellule de départ quel se décale d'une colonne a droite s'il y a pas d'information dans cette cellule !!!
Je te remercie pour l'info !!! pipo
Je te remercie pour l'info !!! pipo
Boujour,
Juste au passage, ce code vous trouve la première cellule vide et donne le numéro de la colonne de la ligne considérée:
With Sheets(2)
colvide = .Range("iv3").End(xlToLeft).Column + 1
End With
Note: "iv3" est l'adresse de la dernière cellule de la ligne 3 (excel 2003) (excell 2007 : "xfd3")
Juste au passage, ce code vous trouve la première cellule vide et donne le numéro de la colonne de la ligne considérée:
With Sheets(2)
colvide = .Range("iv3").End(xlToLeft).Column + 1
End With
Note: "iv3" est l'adresse de la dernière cellule de la ligne 3 (excel 2003) (excell 2007 : "xfd3")