Macro ne fonctionne plus..... Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Avatar du membre
Kalagan
Membre habitué
Membre habitué
Messages : 53
Inscrit le : 12 octobre 2018
Version d'Excel : 365

Message par Kalagan » 16 janvier 2020, 18:24

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 !! :snif: :snif: :snif:

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
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 14'064
Appréciations reçues : 832
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 16 janvier 2020, 18:38

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 ?

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
Avatar du membre
Kalagan
Membre habitué
Membre habitué
Messages : 53
Inscrit le : 12 octobre 2018
Version d'Excel : 365

Message par Kalagan » 16 janvier 2020, 19:40

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.
Avatar du membre
curulis57
Passionné d'Excel
Passionné d'Excel
Messages : 3'747
Appréciations reçues : 226
Inscrit le : 4 janvier 2016
Version d'Excel : 2016 FR / 2019 FR

Message par curulis57 » 17 janvier 2020, 04:03

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!

8-)
A+
Avatar du membre
Kalagan
Membre habitué
Membre habitué
Messages : 53
Inscrit le : 12 octobre 2018
Version d'Excel : 365

Message par Kalagan » 17 janvier 2020, 11:17

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.. ::D
Avatar du membre
Kalagan
Membre habitué
Membre habitué
Messages : 53
Inscrit le : 12 octobre 2018
Version d'Excel : 365

Message par Kalagan » 17 janvier 2020, 11:41

Re,

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

Quelqu'un pour m'aider davantage ?

Merci
Avatar du membre
Kalagan
Membre habitué
Membre habitué
Messages : 53
Inscrit le : 12 octobre 2018
Version d'Excel : 365

Message par Kalagan » 17 janvier 2020, 14:59

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

Merci encore
Avatar du membre
curulis57
Passionné d'Excel
Passionné d'Excel
Messages : 3'747
Appréciations reçues : 226
Inscrit le : 4 janvier 2016
Version d'Excel : 2016 FR / 2019 FR

Message par curulis57 » 17 janvier 2020, 17:55

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! ;;)

8-)
A+
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message