Gros problème (mémoire?) suite à refresh query

WilliamC

XLDnaute Nouveau
Bonjour à tous,


Je vous appelle au secours car j'ai tout testé ce que je pouvais depuis plusieurs jours, et ne vois plus rien qui pourrait me sauver...

Je suis actuellement en création d'un gros fichier excel pour le travail (et surtout d'une macro un peu lourde).

Ma macro doit raffraîchir un table issue d'une requête access 97 (requete créée avec l'assistant requete excel).

Suite à celà, je mets à jour mon fichier. Pour celà, à un moment, je dois concatener les valeurs de 2 cellules dans une seule, puis "tirer" la formule sur toute la colonne. En mode pas à pas, aucun problème, par contre mode "auto", la concatenation fonctionne mais la cellule n'est pas tirée sur la colonne. Si qqun a une idée (hormis les "Application.OnTime Now() + TimeValue("00:00:01")", je vous en serais très très très reconnaissant :D

Je vous pose quelques bouts de mon code (sachant que je n'ai jamais été formé à VB ni à aucun language d'ailleurs, soyez indulgents :eek: )

1° Sur ce bout de code je vais raffraichir ma table requete

' ON A FINI D'ENLEVER LES PROTECTIONS ET LE MODE PARTAGE

' on teste si la connexion avec la table de requête fontionne bien:
'on met à jour PF_SM6 grâce à la requête si ça n'a pas déjà été fait.
Dim introuvable As String
Sheets("PF_SM6").Select
Rows("3:5000").Select
Selection.ClearContents
Range("E10").Select
Set requete = Sheets("PF_SM6").QueryTables(1)

If requete.Refresh = False Then GoTo notfound Else GoTo suitefin:

notfound:
introuvable = MsgBox("Le fichier d'extraction d'infocentre " & Chr(34) & "requete_suivi_CBT_SM6.mdb" & Chr(34) & " , ne se trouve plus dans le répertoire spécifié ou a changé de nom." & Chr(13) & "Veuillez renommer le fichier tel quel " & Chr(34) & "requete_suivi_CBT_SM6.mdb" & Chr(34) & " ou bien le replacer dans le répertoire suivant:" & Chr(13) & Chr(34) & "N:\SOUS-TRAITANCE\suivi QS SM6" & Chr(34) & Chr(13) & Chr(13) & "Sans ce fichier le suivi des caissons sera impossible (pas de mise à jour du portefeuille" & Chr(13) & Chr(13) & "En attendant réparation, le fichier de suivi des caissons conserve sa mise à jour la plus récente, et vous pouvez continuer à renseigner vos données et les enregistrer" & Chr(13) & Chr(13) & "NOTA: Le fichier " & Chr(34) & "requete_suivi_CBT_SM6.mdb" & Chr(34) & " permet d'exécuter une requête mettant à jour la feuille de calcul " & Chr(34) & "PF_SM6" & Chr(34) & "qui est à la base de la mise à jour du présent classeur", , "ALERTE EXTRACTION INFOCENTRE MANQUANTE !!!")
Sheets("Deliveries").Select
sortir = 1
Exit Sub

suitefin:

' on lance une procédure qui permet d'attendre la fin du raffraichissement avant de continuer

Application.DisplayAlerts = True

VerifeEtatRequete

'On affiche le nb de lignes retourné par la requête après raffraichissement.
nombre = requete.ResultRange.Rows.Count


2° Un peu plus loin, je vais travailler avec les données que je viens d'actualiser, et là survient mon problème (sauf en pas à pas)

' ON VA RECOPIER LES FORMULES DE PF_SM6 ET LES TIRER COMME IL FAUT
Sheets("PF_SM6").Select
' puis on recopie les formules
Range("A2").Select
ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[1],RC[2])"
Range("A2:A" & nombre).Select
Selection.AutoFill Destination:=Range("A2:A" & nombre), Type:=xlFillDefault

C'est ici, après avoir créé ma formule "concaténer" en A2, je veux tirer depuis A2 jusqu'à "A" & nombre, et ça ne fonctionne pas en mode normal, uniquement en pas à pas... :( (Pour info la variable "nombre" est bien connue est a pris la bonne valeur...)

J'ai joint une image de ma feuille (la colonne A doit concatener B et C)

HELP!

N'hésitez pas à me poser des questions, si vous êtes motivés à m'aider...
 

Pièces jointes

  • concatener.jpg
    concatener.jpg
    51.4 KB · Affichages: 122
  • concatener.jpg
    concatener.jpg
    51.4 KB · Affichages: 134
  • concatener.jpg
    concatener.jpg
    51.4 KB · Affichages: 134
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : Gros problème (mémoire?) suite à refresh query

bonjour WilliamC

et bienvenue sur XLD

a tester remplacer

Code:
Range("A2").Select
COLOR="SeaGreen"] ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[1],RC[2])"[/color]
Range("A2:A" & nombre).Select
[COLOR=red]Selection.AutoFill Destination:=Range("A2:A" & nombre), Type:=xlFillDefault[/COLOR]

par

Code:
Range("A2").Formula = "=B2&C2"
Range("A2").AutoFill Destination:=Range("A2:A" & nombre), Type:=xlFillDefault
 

Discussions similaires

Réponses
2
Affichages
153
Réponses
8
Affichages
498

Statistiques des forums

Discussions
312 248
Messages
2 086 593
Membres
103 248
dernier inscrit
Happycat