Variable module et feuille

Bonjour,

Je voudrais savoir si il était possible de récupérer une variable venant d'une macro module dans une macro feuille.

Pcq j'ai bien vu que c'était possible entre macro module grace au variable publique mais par contre j'ai rien trouvé pour lier un module et une feuille.

Merci d'avance

Bonsoir,

Un petit exemple SVP...

A+

Euh oui pardon.

Donc en gros je veux mettre ma valeur de B4 feuille 2 dans Bn feuille 3 sachant que n je le calcule grâce a ma macro bouton pour éviter qu'il se réactualise des que je change ma valeur en B2 car au final je veux faire un formulaire que l'on renseigne avec la possibilité de modifier si on s'est tromper , dont les donnés sont ensuite sotcké sur la page suivante pour faire un tableau d’information, et que la valeur de n ne s'actualise que lorsque l'on fait un nouveau formulaire (dans mon vrai fichier les donner son supprimer lorsque l'on clique sur le bouton).

Le n sert à remplir la seconde feuille avec les informations du formulaire dans la 1ere ligne non vide au moment ou l'on commence le formulaire.

Je fais une macro à part pour compter car en la mettant directement dans la macro de la feuille 2, n s'actualise des qu'on touche à B2.

Sinon si tu as une autre manière de faire je prend aussi mais j'ai trouvé que ça.

Voila merci d'avance.

37essai.xlsm (34.98 Ko)

Re,

Sinon j'ai essayer de déplacer ma a macro bouton dans la macro associé à la feuille et plus dans les macro modules.

Du coup comment fait on pour dire à la macro Woorksheet_change de récupérer la valeur n apres venant de la macro associé au bouton?

Bonjour,

Pour moi tes explications sont incompréhensibles...

Mébon... en règle générale les variables publiques sont faites pour ça.

Voir démo

A+

83public.xlsm (18.69 Ko)

Bonjour je vais essayer de réexpliquer plus clairement.

Mes macro affecte deux pages la page du formulaire et celle qui récupère les données pour les stocker.

Le bouton se trouve sur la page du formulaire

1)Je clique sur mon bouton pour rafraîchir mon formulaire

2)Dans ma macro associé au bouton je cherche la première ligne vide de la page de stockage, la macro regarde sur la colonne A (n)

3)Je veux récupérer la valeur de n dans ma macro qui associe les deux pages et qui remplit automatiquement la 2eme en fonction de la 1ère, pour que le remplissage se fasse sur la bonne ligne.

Mon problème est que je n'arrive pas à passer n d'une macro à l'autre.

Si je mets n directement dans ma macro d'association entre les deux pages des que je modifie dans le formulaire l'information qui va en A il descendra d'une ligne toute les suivante vu que la case A ne sera plus vide.

Or je voudrais que tant que je n'ai pas recliquer sur le bouton n soit constant.

Bonjour à tous,

Regarde le résultat obtenu en déclarant n comme variable publique (cette déclaration est faite en tête du module Module 1).

72essai.xlsm (27.80 Ko)

A+

Désolé, peut-être que quelqu'un y verra plus clair.

Je passe la main.

A+

Merci , ça à l'air de fonctionner je vais essayer de faire ça sur mon gros classeur.

EDIT: Alors ça marche à moitié pcq quand je modifie mon formulaire ça ne remplit pas ma base de donnée. Il faut que je modifie ma donnée que je valide puis que je double clique sur la case et que je revalide, je comprend pas d'où ça vient.

Voici le code (le bouton et la feuille) :

Public n As Integer

Sub Nouvelle_IC()

 Dim j As Integer

 n = 18
While (Sheets("intervenants").Cells(n, 2).Value <> "") 'On recherhce la prochaine ligne à remplir
n = n + 1
Wend

Union(Range( _
        "E10,G10,F24,F22,C20:H20,C19:H19,C17:H17,C15,D15:F15,G15,G13,G12,E13,E12,C12,C13,C9:E9,F9,G9:H9,C7:H7,E5:F5,E5:F5,E43:E47,D48:H48,G43:G47,E49:E56,G49:G56,E58:E64,D65:H65,E66:E69,G58:G64,G66:G69,D70:H70,E72:E83" _
        ), Range( _
        "G72:G83,D84:H84,E87:E89,D90:H90,G87:G89,E92:E95,G92:G95,D96:H96,E98:E101,G98:G101,E103:E112,G103:G112,D113:H113,E114:E116,G114:G116,D117:H117,B121:H121,C26:H26,D24,D22" _
        )) = ""

ActiveSheet.Range("H5").Value = ActiveSheet.Range("H5").Value + 1 'Incrémentation du numéro
ActiveSheet.Range("E5").Value = Date
For Each coche In ActiveSheet.Shapes
If coche.Name Like "Check*" Then coche.ControlFormat.Value = False 'On decoche toute les cases
Next coche

End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.Name = "IC " & Range("C7").Value
Dim i As Integer

j = n + 1

If Target.Column = 3 And Target.Row = 7 Then 'Nom de l'entreprise
Sheets("intervenants").Cells(n, 2).Value = ActiveSheet.Cells(7, 3).Value
Sheets("intervenants").Cells(j, 2).Value = ActiveSheet.Cells(7, 3).Value

ElseIf Target.Column = 3 And Target.Row = 9 Then 'Adresse
Sheets("intervenants").Cells(n, 11).Value = ActiveSheet.Cells(9, 3).Value
Sheets("intervenants").Cells(j, 11).Value = ActiveSheet.Cells(9, 3).Value

ElseIf Target.Column = 3 And Target.Row = 12 Then 'Nom du responsable 1
Sheets("intervenants").Cells(n, 5).Value = ActiveSheet.Cells(12, 3).Value

ElseIf Target.Column = 3 And Target.Row = 13 Then 'Nom du responsable 2
Sheets("intervenants").Cells(j, 5).Value = ActiveSheet.Cells(13, 3).Value

ElseIf Target.Column = 3 And Target.Row = 17 Then 'Sous traitant
Sheets("intervenants").Cells(n, 4).Value = ActiveSheet.Cells(17, 3).Value
Sheets("intervenants").Cells(j, 4).Value = ActiveSheet.Cells(17, 3).Value

ElseIf Target.Column = 5 And Target.Row = 10 Then 'Telephone fixe
Sheets("intervenants").Cells(n, 6).Value = ActiveSheet.Cells(10, 5).Value
Sheets("intervenants").Cells(j, 6).Value = ActiveSheet.Cells(10, 5).Value

ElseIf Target.Column = 5 And Target.Row = 12 Then 'Portable resp 1
Sheets("intervenants").Cells(n, 8).Value = ActiveSheet.Cells(12, 5).Value

ElseIf Target.Column = 5 And Target.Row = 13 Then 'Portable resp 2
Sheets("intervenants").Cells(j, 8).Value = ActiveSheet.Cells(13, 5).Value

ElseIf Target.Column = 5 And Target.Row = 5 Then 'Date IC
Sheets("intervenants").Cells(n, 14).Value = ActiveSheet.Cells(5, 5).Value

ElseIf Target.Column = 7 And Target.Row = 9 Then 'Ville
Sheets("intervenants").Cells(n, 12).Value = ActiveSheet.Cells(9, 6).Value & "-" & ActiveSheet.Cells(9, 7).Value

ElseIf Target.Column = 7 And Target.Row = 10 Then 'Fax
Sheets("intervenants").Cells(n, 7).Value = ActiveSheet.Cells(10, 7).Value
Sheets("intervenants").Cells(j, 7).Value = ActiveSheet.Cells(10, 7).Value

ElseIf Target.Column = 7 And Target.Row = 12 Then 'Mail resp 1
Sheets("intervenants").Cells(n, 9).Value = ActiveSheet.Cells(12, 7).Value

ElseIf Target.Column = 7 And Target.Row = 13 Then 'Mail resp 2
Sheets("intervenants").Cells(j, 9).Value = ActiveSheet.Cells(13, 7).Value

ElseIf Target.Column = 6 And Target.Row = 9 Then 'Code postal
Sheets("intervenants").Cells(n, 12).Value = ActiveSheet.Cells(9, 6).Value & "-" & ActiveSheet.Cells(9, 7).Value

ElseIf Target.Column = 4 And Target.Row = 22 Then 'N°  Ic
Sheets("intervenants").Cells(n, 19).Value = ActiveSheet.Cells(5, 8).Value

ElseIf Target.Column = 4 And Target.Row = 22 Then 'Date début
Sheets("intervenants").Cells(n, 20).Value = ActiveSheet.Cells(4, 22).Value

ElseIf Target.Column = 6 And Target.Row = 22 Then 'Date fin
Sheets("intervenants").Cells(n, 21).Value = ActiveSheet.Cells(6, 22).Value

ElseIf Target.Column = 4 And Target.Row = 24 Then 'Effectif moyen
Sheets("intervenants").Cells(n, 22).Value = ActiveSheet.Cells(4, 24).Value

ElseIf Target.Column = 6 And Target.Row = 24 Then 'Date fin
Sheets("intervenants").Cells(n, 23).Value = ActiveSheet.Cells(6, 24).Value

End If
End Sub

Nous t'avons aiguillé sur l'utilisation des variables publiques mais pour ce qui est du reste, le code ne suffit plus.

Il faut que joignes un classeur exemple avec quelques données non confidentielles et que tu expliques la finalité du traitement.

Aide-nous à comprendre ce que tu veux faire et on t'aidera à trouver la méthode pour y arriver.

A+

Une petite pause déjeuner et ça devient plus claire.

Mon second problème venait de la definission de ma macro, il faalit mettre WorkSheet_Change et pas Selection_Change

En tous cas merci beaucoup pour votre aide

Rechercher des sujets similaires à "variable module feuille"