Macro à formule

Merci beaucoup!

-- 06 Déc 2010, 16:59 --

Re

L'explication est dans le fichier (onglet recapitulatif)

MERCI

23jacquier.xlsm (81.18 Ko)

Bonsoir à tous,

Un de mes collègues ma réalisé un fichier Excel avec des macros seulement elle ne fonctionne pas sous Excel 2000. Le réaliser avec des formules réglerais le problème. J'en ai besoin cette semaine, si quelqu'un trouve la formule je lui en serais infiniment reconnaissant.

Je vous met le fichier en pièce jointe avec l'explication.

Merci à ceux qui prendrons la peine de le lire.

Bonne soirée à tous

-- 07 Déc 2010, 20:43 --

ps:l'explication est dans l'onglet "récapitulatif"

Bonjour

J'en ai mal aux yeux à force de chercher ce fichier

Bonne soirée

Bonjour,

Ta sub NouvelleM est mal placée dans ton fichier.

Il faut la mettre dans un module et non dans un feuille.

A quoi correspond "Tableau9210" dans ton fichier ??

Dans le code tu déclares "Dim ligne_cell" puis plus loin cela devient "Ligne_cel" ?

Ton code ne peut fonctionner comme cela quelque soit la version d'excel.

Merci de tes précisions

Amicalement

Bonjour

Désolé de ma 1ère intervention mais je n'avais pas vu la 1ère partie

J'ai la vue qui baisse

Pourtant ....

Bonne journée

Bonjour,

Désolé, mais effectivement j'avais oublié la pièce jointe, la voici.

Merci à tous

re,

Si tu ne réponds pas à mes questions je ne peux pas t'aider.

Ton nouveau fichier comporte les mêmes erreurs.

Désolé mais ce n'est pas moi qui est élaboré le fichier et je ne comprend pas votre language, je ne serais pas répondre à votre question.

-- 08 Déc 2010, 17:53 --

Par contre sur Excel 2007 le fichier fonctionne.

re,

Pourquoi ne demandes-tu pas à celui qui a fait ton fichier ? ce serait plus simple je crois.

Il y a une erreur ici --> Range("Tableau9210[[463 G]:[430-5]]").Select

Et à la lecture du code je ne vois pas pourquoi il fonctionnerait plus sous excel 2007 que sous excel 2000. Hormis l'instruction ci-avant le code est correct ou alors ton fichier est incomplet.

Merci d'expliquer ce que doivent faire les boutons sur ta feuille Recapitulatif. Là on pourra t'aider à trouver une solution.

A te relire

Bonjour,

La personne ayant créé le fichier est injoignable pendant 2 semaines. Les boutons de la feuille récapitulatif mettent à jour la page, lorsque l'on clic sur l'onglet la macro va chercher dans l'onglet saisie la date la plus récente pour chaques numéros de cellules et inscrit la ligne correspondante dans l'onglet récapitulatif.

Cordialement

Re,

Essaie comme ceci :

  • Clique droite sur l'onglet RECAPITULATIF et choisis l'option "visualiser le code". Là tu es dans la partie VBA de ton fichier.
  • Dans la fenêtre, tu verras deux codes (Sub AàJ_1xx() et Sub AàJ_2xx()
  • Sélectionne les deux codes puis supprime les.
  • Dans le menu VBA, insère un module par menu / Insertion -> Module. Cela t'ouvre une fenetre vierge à droite.
  • Dans cette fenêtre colle les deux codes ci-dessous
  • Enregistre ton fichier
Sub AàJ_1xx()
'Macro modifiée par Dan le 09/12/10
'Range("Tableau9210[[463 G]:[430-5]]").Select
Dim ligne_cel As Integer, a As Integer
Range("B10:G" & Range("A" & Rows.Count).End(xlUp).Row).ClearContents
With Worksheets("Saisie")
    For ligne_cel = 10 To 5
        For a = .Range("B65536").End(xlUp).Row To 12 Step -1
            If .Range("C" & a) = Range("A" & ligne_cel) Then
            Exit For
            End If
        Next a
    Next ligne_cel
End With
End Sub
Sub AàJ_2xx()
'Macro modifiée par Dan le 09/12/10
Dim ligne_cel As Integer, a As Integer
Range("J10:R" & Range("J" & Rows.Count).End(xlUp).Row).ClearContents
With Worksheets("Saisie")
    For ligne_cel = 10 To 55
        For a = .Range("L65536").End(xlUp).Row To 12 Step -1
            If .Range("M" & a) = Range("I" & ligne_cel) Then
                .Range("N" & a & ":V" & a).Copy Range("J" & ligne_cel)          
                Exit For
            End If
        Next a
    Next ligne_cel
End With
End Sub

Il te faudra ensuite réassocier les deux boutons de ta feuille RECAPITULATIF aux codes comme suit :

  • Clique droite sur le bouton Mise à jour cellule 1XXX puis choisis l'option "affecter une macro"
  • Associe à ce bouton la macro Sub AàJ_1xx()
  • Refais la même opération pour l'autre bouton en associant la macro Sub AàJ_2xx()

Tu verras que j'ai optimalisé le code afin qu'il soit plus court donc plus rapide.

Si pb n'hésite pas.

Si ok, n'oublie pas ce cliquer sur le V vert pour cloturer le fil.

Amicalement

Bonsoir,

J'ai fais la manip que vous m'aviez indiqué (Dan), la macro "AàJ_2xx()" fonctionne très bien, par contre la "AàJ_1xx()" ne fonctionne pas. Aucun numéro n'apparait dans l'onglet récapitulatif.

Cordialement

-- 09 Déc 2010, 17:53 --

Autant pour moi la macro AàJ_2xx() ne fonctionne pas non plus elle recopie la dernière ligne saise et pas la date la plus récente.

Cordialement

re,

Désolé... il manque une instruction dans le premier code.

Sub AàJ_1xx()
'Macro modifiée par Dan le 09/12/10
'Range("Tableau9210[[463 G]:[430-5]]").Select
Dim ligne_cel As Integer, a As Integer
Range("B10:G" & Range("A" & Rows.Count).End(xlUp).Row).ClearContents
With Worksheets("Saisie")
For ligne_cel = 10 To 5
    For a = .Range("B65536").End(xlUp).Row To 12 Step -1
        If .Range("C" & a) = Range("A" & ligne_cel) Then
            .Range("D" & a & ":I" & a).Copy Range("B" & ligne_cel)
        Exit For
        End If
    Next a
Next ligne_cel
End With
End Sub

Autant pour moi la macro AàJ_2xx() ne fonctionne pas non plus elle recopie la dernière ligne saise et pas la date la plus récente.

Je ne vois pas de souci... donne un exemple de ce que l'on doit trouver car le tableau de J à R se met bien à jour en fonction des données de la feuille saisie.

A te relire

Oui, je vais vous citer un exemple:

dans l'onglet "saisie" si j'ai :

DATE................N°cel...........463G........463-5..........

12/12/2010........123...............3.............1

11/12/2010........123...............2.............2

Alors je voudrais dans l'onglet RECAPITULATIF:

......................................463G..........463-5

123...................................3...............1

Car les numéros de cellules sasie sont les même mais la date la plus récente et le 12/12/2010 donc je voudrais cette ligne là.

Cordialement

re,

Ok je vois mais le code dans le fichier que ton collègue a réalisé ne faisait nullement cela.

Je te propose une autre solution qui me parait plus simple à réaliser.

Dès que tu changes une date en feuille saisie (colonne B ou L), on met à jour automatiquement la feuille récapitulatif.

De là plus besoin de boutons et tout se fait en fonction de la ligne sur laquelle tu changes une date.

A te relire

Bonjour,

Oui, c'est vrai il n'avait pas programmé cela. Votre idée semble judicieuse! Ece possible de l'appliquer sur ce fichier joint, attention j'ai modifié des colonnes. (celle-ci sont définitive).

Cordialement

-- 10 Déc 2010, 15:58 --

Il manque les numéros de cellules de color=#FF0000](201 à 246)[/color

-- 10 Déc 2010, 16:06 --

De la colonne G (G10 à G55) de l'onglet RECAPITULATIF, il faudrait les ajouter et faire la même chose que dans l'autre fichier.

-- 11 Déc 2010, 12:43 --

Bonjour Nad,

J'ai ajouté ce qu'il manquait au fichier, serait-il possible d'appliquer votre solution sur ce fichier joint?

Merci

Bonne journée

Re,

Bien que je te l'avais déjà signalé, ton fichier avait de nouveau cette macro AàJ_1xx() mal placée dans ton fichier.

Autre souci, j'ai planché pas mal de temps sur une erreur du code proposé dans le fichier joint qui finalement était due à un espace que tu avais ajouté dans le nom de ta feuille RECAPITULATIF.... Vérifie cela sans quoi les codes plantent !

Vois le fichier joint qui fait ce que je t'ai proposé avant. Dés que tu changeras dans la feuille "Saisie" une donnée de date en colonne B ou K, la feuille RECAP sera mise à jour.

Les deux boutons sur ta feuille RECAP ne servent plus et sont donc supprimés bien sûr.

Si ok, n'oublie pas de cliquer sur le V vert pour cloturer le fil.

Amicalement

12jacquier2.zip (48.63 Ko)

Bonjour Dan,

J'ai testé le fichier que vous m'aviez mis sur le forum qui fonctionne parfaitement. Il y a un inconvénient, il faut rentrer la date en dernier (après avoir renseigné la ligne) car la macro s'active à l'inscription de celle-ci. Est-ce possible de "forcer" les personnes qui rempliront le fichier à inscrire la date en dernier.

Si cela n'est pas possible, je pense que la première solution proposé conviendrait mieux (allé chercher la dernière ligne de l'onglet "saisie".

Bonne soirée

re,

Après réflexion je pense que le mieux est que la mise à jour se fasse à chaque valeur changée sur la ligne.

Donc si la date change et qu'il n'y a pas de valeur dans cellule 1xx (ou cellule 2xx), on ne fait rien.

Si on a une date et une valeur en cellule 1xx, dès que l'on change dans les cellules à droite on fait la mise à jour.

Qu'en pensez-vous ?

Amicalement

Bonjour Dan,

Oui, mais si il remplice la ligne de droite et ensuite mettent un numéro de cellule et une date ece-que la mise à jour sera faite?

Il ne faut pas qu'il soit obligé de remplire la ligne d'une manière sinon sa ne fonctionnera jamais. C'est sur.

Bonne soirée

Rechercher des sujets similaires à "macro formule"