Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Macro pour alimentation de données Excel dans le même classeur

  • Initiateur de la discussion Initiateur de la discussion benadry
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

benadry

XLDnaute Occasionnel
Bonjour le forum,


Je souhaite créer une macro dans laquelle l'utilisateur saisit sa valeur dans une cellule (en l'occurrence ec C29). Ensuite, une msgbox demande à l'utilisateur s'il veut entrer une autre donnée. Si oui, la valeur C29 est recopiée en M29. Si une autre donnée doit être entrée, c'est copié en N29, puis en O29 ...
Ainsi de suite avec les autres lignes.

J'ai essayé de faire quelque chose, mais je ne maîtrise pas le passage d'une ligne à l'autre et d'une colonne à l'autre.

Quelqu'un pourrait-il me dépanner ?

Merci d'avance.

Cordialement.
 

Pièces jointes

Re : Macro pour alimentation de données Excel dans le même classeur

Bonjour Benadry, bonjour le forum,

Peut-être comme ça avec la macro événementielle Change :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Pl As Range 'déclare la variable Pl (Plage)

Set Pl = Application.Union(Range("C29:C32"), Range("C34:C36")) 'définit la plage Pl
If Application.Intersect(Target, Pl) Is Nothing Then Exit Sub 'si le changement a lieu ailleurs que dans la plage Pl, sort de laprocédure
If Target.Value = "" Then Exit Sub 'si la cellule est effacée, sort de la procédure
'si "Oui" au message copie la cellule de la plage dans la première colonne vide de la même ligne après la colonne L
If MsgBox("Avez-vous d'autres informations de ce type (" & Range("A29").Value & ") à renseigner ?" & vbLf & vbLf & _
    "Si oui, vos données vont être sauvegardées et vous allez pouvoir en renseigner d'autres." & vbLf & vbLf & "Si non, merci de passer à l'étape suivante", vbYesNo + vbQuestion, _
    "GESDEC") = vbYes Then Cells(Target.Row, Application.Columns.Count).End(xlToLeft).Offset(0, 1).Value = Target.Value
With Target
    .ClearContents 'efface le contenue de la cellule modifiée
    .Select 'sélectionne la cellule modifiée
End With
End Sub
 
Re : Macro pour alimentation de données Excel dans le même classeur

Bonsoir Robert,

En fait, votre code fonctionne très bien quand on tape une valeur dans les cellules C29:C32 et C34:C36.

Mon problème est que les valeurs entrées sont le résultat de calculs. Or, dans ce cas, les cellules se remplissent en fonction des formules de calcul, mais la macro ne se déclenche pas. Il faut que je tape "physiquement" dedans.

Serait-ce abuser que de vous demander encore un petit coup de main ?

Merci d'avance.

Bien cordialement.
 
Re : Macro pour alimentation de données Excel dans le même classeur

Bonjour Benadry, bonjour le forum,

Je ne comprends pas les personnes qui mettent un fichier exemple qui ne correspond pas à leur requête. Ce n'est que perte de temps...
Si ces cellules contiennent des formules, il faut bien que l'utilisateur rentre une valeur quelque part ! Il suffit donc de remplacer la plage des formules par la plage où sont éditées les données... Sinon il y à l'événement Calculate mais sans exemple concret (celui avec les formules) difficile de le mettre en place.
 
Re : Macro pour alimentation de données Excel dans le même classeur

Bonjour Robert,
Bonjour le forum,

Désolé, je ne pensais pas que ça avait de l'importance.

J'ai modifié le fichier test avec un exemple de formules. Dans la réalité, c'est bien plus compliqué que ça et il y a des formules pour chaque cellule concernée.

Par ailleurs, j'ai remarqué qu'en cliquant dans la formule de calcul, la macro se déclenche.

Merci encore et désolé.

Cordialement.
 

Pièces jointes

Re : Macro pour alimentation de données Excel dans le même classeur

Bonjour le forum,


Je remonte ce post à la surface, car, j'ai eu beau chercher, je n'ai pas trouvé de solution à mon problème.

Je ne comprends pas comment fonctionne l'événement Calculate dont parle Robert (et donc, ce n'est pas possible pour moi de l'intégrer dans la macro).

J'ai essayé aussi en faisant un banal copier-coller de contenu de cellules, mais là, je n'arrive pas à le combiner avec la msgbox.

J'ai pas mal avancé sur mon projet d'ensemble, mais, maintenant, je me heurte à l'étape qui me pose problème, et je me trouve au point mort.

Quelqu'un pourrait-il m'aider ?


Je joins un nouveau fichier test.

Merci d'avance.


Cordialement.
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…