Action conditionnee dans MACRO

  • Initiateur de la discussion Initiateur de la discussion Fusky
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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 ?
 
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.
 
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
@+
 
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:
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 ?
 
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:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
496
Retour