Macro ne fonctionne plus

Bonjour à toutes et tous,

Eh bien je n'en finis pas de découvrir les subtilités du VBA.....

V'là ti pas qu'une de mes macros fonctionnait super bien depuis plusieurs jours et aujourd'hui encore et que d'un seul coup sans crier gare et sans que je n'y ai apporté de modifications... patatra.... ca fonctionne plus !!

Lorsque je lance la macro, j'ai le message d'erreur suivant : "Membre de méthode ou de données introuvables", en jaune surligné : le sub Compilation() et en bleu .Copy de la ligne Selection.Copy

Je précise que j'ai plusieurs fichiers qui contiennent cette même macro ; que toutes fonctionnaient très bien jusqu'à l'heure du gouter d'aujourd'hui (je les ai toutes fait fonctionner dans la journée...).Et que plus aucune ne fonctionne.

Qu'est ce qui se passe ??

Option Explicit

'Déclaration des variables au niveau du Module

Dim i As Integer, j As Integer, k As Integer

Dim DerniereLigne As Integer

Dim LastRowConsolidation As Integer

Dim NbFeuil As Variant

Dim ws As Worksheet

Dim DerLigne As Long

'***************************************************

' Procédure permettant d'effacer les données de

' la compilation afin d'éviter les doublons

'***************************************************

Sub EffaceCompilation()

'On se positionne sur la feuille Compilation

Worksheets("Compil").Select

'On sélectionne la plage correspondante aux données à effacer

Rows("5:1000000").Select

'On efface le contenu et la mise en forme

Selection.Clear 'ou Selection.delete shift:=xlUp

'On se repositionne sur le premier enregistrement à copier

Range("A5").Select

End Sub

'****************************************************

' Procédure permettant de réaliser une compilation sur autre feuille.

'****************************************************

Sub Compilation()

'Désactiver le raffraichissement de l'écran scintillement

Application.ScreenUpdating = False

'Appeller la procédure permettant d'effacer les données

EffaceCompilation

'Créer une boucle permettant de lire toutes les feuilles à compiler

NbFeuil = Sheets("Compil").Index - 1

For j = 1 To NbFeuil 'Parcourir les feuilles

'Sélectionner la première feuille

Sheets(j).Select

'Se positionner sur la dernière ligne non vide

DerniereLigne = Range("A1000000").End(xlUp).Row

'Parcourir tout le tableau à partir de la ligne pour copier chacune ligne

For i = 1 To DerniereLigne

'Sélectionner la première feuille

Sheets(j).Select

'Sélectionner la première ligne

Rows(i).Select

'Copier la ligne

Selection.Copy

'Où, sur la feuille Compil, il faut donc la sélectionner

Sheets("Compil").Select

'Il faut trouver la dernière ligne non vide de la feuille Compil

LastRowConsolidation = Range("A1000000").End(xlUp).Row + 1

'Sélectionner la cellule vide et la première colonne

Cells(LastRowConsolidation, 1).Select

'Une fois positionné, ColleR les données

ActiveSheet.Paste

Application.CutCopyMode = False

Next i

Next j

'On réactive le raffraichissement de l'écran scintillement

Application.ScreenUpdating = True

'On affiche un message qui prévient que la consolidation est terminée

MsgBox "La compilation est terminée...", vbOKOnly + vbInformation, "Message"

End Sub

Bonjour,

Tu as récemment changé de version excel en passant à 365 ?

Ou bien tu as changé de PC ?

Ou bien ta redevance à 365 est périmée ?

Bonsoir Steelson,

non rien de tout cela.

Nous avons depuis quelques jours un message d'erreur avec excel "mémoire insuffisante", plusieurs collègues sont concernés également mais rien d'autre.

Salut Kalagan,

Salut Steelson,

Quelques réflexions tirées de ma très petite expérience des entrailles d'Excel

- "Membre de méthode ou de données introuvables" est une erreur souvent rencontrée lors du chargement d'un fichier externe signalant une référence non chargée.

"Solution" qui a toujours fonctionné jusqu'à présent : entrer dans le code, puis menu 'Outils'-'Références...'.

Si, dans la liste qui s'affiche, la mention "Manquant" apparaît, cocher cette option, fermer et relancer.

- "Mémoire insuffisante" est une erreur que je rencontre lorsqu'une boucle tourne à l'infini.

Sans chercher l'embrouille, ton code, si ta Compilation comporte un grand nombre de lignes à copier, pourrait provoquer ce phénomène dont je n'explique pas l'origine autrement.

Il nous faudrait notre regretté MFerrand pour expliquer ce brol!

J'ai réécrit ta macro à ma sauce.

  • tu n'as jamais besoin de SELECT pour copier des valeurs : la copie se fait directement d'une feuille à l'autre : il suffit juste de spécifier le nom de cette feuille, histoire qu'Excel ne se prenne pas les bits dans le tapis ;
  • cette macro est à coller telle quelle dans le module VBA de la feuille 'Compil' ;
  • la macro démarre sur un double-clic dans cette même feuille 'Compil' ;
  • n'ayant pas de précisions sur ces données, j'ai écrit par défaut Resize(iRowA, 10) pour le nombre de colonnes. Tu corriges (3 emplacements) en fonction de tes données.
Si le nombre de colonnes est variable, il faudra adapter le code.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Dim iRow&, iRowA&
'
Cancel = True
Application.ScreenUpdating = False
'
Range("A5").Resize(Range("A" & Rows.Count).End(xlUp).Row, 10).Delete shift:=xlUp        'effacement 'Compil' actuelle
'
For x = 1 To Sheets.Count
    If Sheets(x).Name <> "Compil" Then
        iRowA = Sheets(x).Range("A" & Rows.Count).End(xlUp).Row                         'colonne A d'une feuille à compiler
        iRow = IIf([A5] = "", 5, Range("A" & Rows.Count).End(xlUp).Row + 1)             'ligne d'enregistrement en 'Compil'
        Range("A" & iRow).Resize(iRowA, 10).Value = Sheets(x).Range("A1").Resize(iRowA, 10).Value
    End If
Next
'
Application.ScreenUpdating = True
MsgBox "La compilation est terminée...", vbOKOnly + vbInformation, "Compilation"        'message de fin de compilation
'
End Sub

A tester, évidemment, le code ayant été écrit en aveugle!

A+

Bonjour Curulis 57,

Merci beaucoup pour ton aide, mais je t'avoue que je ne m'en sors pas.

Comment faut il déclarer la variable x ?

Merci

Oup's !!

Dim x as variant..

Re,

Bon.. ca a fonctionné une seule fois... depuis.. plus rien ne se passe...

Quelqu'un pour m'aider davantage ?

Merci

J'ai réussi à m'en sortir !

Merci encore

Salut Kalagan,

peux-tu expliquer ce que tu as fait pour régler le problème, ce qui provoquait le bug?

Cela pourrait intéresser d'autres qui rencontrent le même souci!

A+

Rechercher des sujets similaires à "macro fonctionne"