Action conditionnee dans MACRO

Fusky

XLDnaute Junior
Bonjour,


Je passe directement par un exemple :

j'ai une macro qui me fait 36 truc dans mon fichier, et en plus je voudrais quelle me copie la plage A1:C5 si et seulement si Z1>0.

Est-ce possible d'ecrire ca en VBA ?
 

Pierrot93

XLDnaute Barbatruc

Fusky

XLDnaute Junior
Re : Action conditionnee dans MACRO

Pleins de bonnes choses dans ces posts !

J'ai trouvé deux cas qui sont très proches des miens :
  • Extraire uniquement les données de la colonne A , d'un classeur fermé
    Il me faudrait en fait extraire les données d'une plage de cellule... Penses-tu pouvoir m'aider à modifier cette macro ?
  • Transférer des enregistrements entre 2 classeurs fermés
    Ici aussi le résultat est assez similaire, sauf que la macro est lancée depuis un 3ème fichier (vu que les deux autres sont fermés), chose dont je n'ai pas besoin.
 

Pierrot93

XLDnaute Barbatruc
Re : Action conditionnee dans MACRO

Bonsoir,

nous pourrons certainement t'aider, mets en pièce jointe le code que tu a déjà fait et le modèle des données à traiter... un tout petit classeur représentant uniquement le problème posé est le mieux...

bonne fin d'après midi
@+
 

Fusky

XLDnaute Junior
Re : Action conditionnee dans MACRO

Bonsoir,

Je viens de compiler un petit exemple, j'espère avoir été clair et concis, si ce n'est pas le cas n'hésitez pas à le dire.

Merci d'avance pour l'aide que vous pourrez m'apporter.

Bonne soirée à vous,
 

Pièces jointes

  • Exemple Forum Fusky.zip
    30.9 KB · Affichages: 22

Pierrot93

XLDnaute Barbatruc
Re : Action conditionnee dans MACRO

Bonjour Fusky,

regarde le code ci-dessous, fonctionne chez moi sous 2003.... vérifie bien le nom des objets et adapte en conséquence, de plus j'ai une version française :

Code:
Option Explicit
Sub test()
Dim Source As ADODB.Connection, Rst As ADODB.Recordset, i As Integer
Dim ADOCommand As ADODB.Command, fichier As String, Cellule As String, Feuille As String
Cellule = "A1:T500"   'plage de cellules
Feuille = "Feuil1$"   'nom feuille suivi d'un $
fichier = ThisWorkbook.Path & "\ClasseurSource " & Sheets("Destination").ComboBox1.Value & ".xls"
Set Source = New ADODB.Connection
Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=" & fichier & ";Extended Properties=""Excel 8.0;HDR=Yes;"";"
Set ADOCommand = New ADODB.Command
With ADOCommand
    .ActiveConnection = Source
    .CommandText = "SELECT * FROM [" & Feuille & Cellule & "]"
End With
Set Rst = New ADODB.Recordset
Rst.Open ADOCommand, , adOpenKeyset, adLockOptimistic
Set Rst = Source.Execute("[" & Feuille & Cellule & "]")
With Sheets("Résultat attendu").Range("A65536").End(xlUp)
    .Offset(2, 0).Value = Sheets("Destination").ComboBox1.Value
    For i = 0 To Rst.Fields.Count - 1
        .Offset(3, i).Value = Rst.Fields(i).Name
    Next i
    .Offset(4, 0).CopyFromRecordset Rst
End With
Rst.Close
Source.Close
Set Source = Nothing
Set Rst = Nothing
Set ADOCommand = Nothing
End Sub

bonne journée et bon courage pour la suite.
@+
 
Dernière édition:

Fusky

XLDnaute Junior
Re : Action conditionnee dans MACRO

Bonjour Pierrot,

Merci beaucoup pour ta contribution, cela m'aide beaucoup et j'apprend pas mal de truc au passage !

Quelques petites précisions sont toutefois nécessaires : la macro marche niquel chez moi, mais uniquement lorsque les fichiers sources sont ouverts. Il me semblait que l'intérêt d'ADO était justement de pouvoir travailler sur des fichiers fermés... ai-je mal fait qqch ?
 

Pierrot93

XLDnaute Barbatruc
Re : Action conditionnee dans MACRO

Re,

chez moi pas de problème fichier source fermé, j'ai testé avec "JANVIER", mais attention je suis encore sous 2003, et toi sous 2007, peut être des choses à activer, je sais pas....
Par contre, le fichier "Destination" dans lequel se trouve la macro est ouvert...
 
Dernière édition:

Statistiques des forums

Discussions
312 503
Messages
2 089 059
Membres
104 014
dernier inscrit
Aurélie MONTEIL