Import/Copier/coller cellule non vide

Bonsoir a tous,

je sollicite votre aide pour une petite macro. Je vous expliques ma demande apres le code :

Sub test1()
If Range("I5").Value Like "*H1a*" And Range("I8").Value Like "*Effet_joules*" Then
    ElseIf Range("I24").Value Like "*Est_Ouest*" And Range("I27").Value Like "*S1*" Then
Call CDC0
Else: Call test2
End If
End Sub

Comme vous pouvez le voir, je regarde si les celules sont non vide (cellule I5, I8, I24, et I27).

Sub CDC0()
'ZoneH1aEstOustJoule
Application.Workbooks.Open "fichier1.xls"

    Range("tableau1").Select
    Selection.Copy
    Windows("Outil_FinalV2.xlsm").Activate
    Sheets("Zone").Select
    Range("A3").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False     'Vide le presse-papier
    Windows("tableau1.xls").Activate
    Range("A1").Select
    ActiveWorkbook.Close
End Sub

Suite au premier code, mon tableau est donc coller.

Cependant si l'on revient au premier code, il teste les cellule I5, I8, I24 etI27, cependant j'aimerai qu'il fasse aussi les test jusque Y5, Y8,Y24 et Y27.

Mon probleme c'est que je souhaiterai aussi que comme la Cellule I5 ne sera pas vide, quand la colonne J est tester le tableau2 se mette pas au meme endroit que la precédente procedure, mais aille se mette 13 colonnes plus loins.

En Résumé, si la Colonne A est non vide, le tableau soit collé non plus en A3, mais en M3, puis en Y3 ainsi de suite jusqu'en GK3.

Ainsi le test I collera toujours en A3, le test J collera toujours en M3, le test K collera toujours en Y , etc...

Infos supémentaires :

j'ai donc 17 test à faire et 17 copier coller à faire. Bien entendu les tableaux sont différent à chaque fois.

Merci de l'aide que vous pourrez m'apporter. Je suis assez débutant en VBA, des explications détaillées sont les bienvenues

Bonjour et bienvenue sur le forum

Il serait plus facile d'étudier ton problème si tu joignais les 2 fichiers concernés...

Bye !

Bonjour,

Merci de votre intervention, je ne joindre de fichiers :

  • volume de 300 Mo
  • plus de 100 fichiers
  • confidentialité

Je me doute que c 'est difficile de répondre sans l'aide de fichier pour tester. Je vais tacher de réexpliquer plus clairement. et de fonctionner par étape.

    Sub test1()
    If Range("I5").Value Like "*H1a*" And Range("I8").Value Like "*Effet_joules*" Then
        ElseIf Range("I24").Value Like "*Est_Ouest*" And Range("I27").Value Like "*S1*" Then
    Call CDC0
    Else: Call test2
    End If
    End Sub

Ce code permet de tester les cellules, sur la colonne I. Je souhaiterai donc qu'il fasse exactement la même chose pour les colonnes de J a Y, sans avoir a tout réécrire le code pour chaque colonnes.

Si déjà je pouvais une aide pouvait être apportée pour cette partie, ce serait une grande avancé !

Tu écris que tu ne peux pas joindre de fichier pour cause de :

-volume de 300 Mo

mais s’ils sont plus gros, tu peux passer par www .cjoint.com

-plus de 100 fichiers

mais avec 2 fichiers bien choisis, c’est suffisant

-confidentialité

mais tu peux les rendre anonymes,quitte à les alléger…

Je te propose tout de même ce code que je ne peux donc tester moi-même :

    Sub test1()
    Dim i As Integer
    For i = 10 To 25
        If Cells(5, i).Value Like "*H1a*" And Cells(8, i).Value Like "*Effet_joules*" Then
            ElseIf Cells(24, i).Value Like "*Est_Ouest*" And Cells(27, i).Value Like "*S1*" Then
                Call CDC0
        Else: Call test2
        End If
    Next i
    End Sub

S’il ne va pas, je ne peux rien faire de plus sans fichier.

Désolé !

Bye !

Re-bonjour ton code fonctionne correctement : Merci !, cependant, maintenant il faut en venir au 2eme code.

'Colonne I
    Sub CDC0()
    'ZoneH1aEstOustJoule
    Application.Workbooks.Open "fichier1.xls"

        Range("tableau1").Select
        Selection.Copy
        Windows("Outil_FinalV2.xlsm").Activate
        Sheets("Zone").Select
        Range("A3").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False     'Vide le presse-papier
       Windows("tableau1.xls").Activate
        Range("A1").Select
        ActiveWorkbook.Close
    End Sub

Actuellement, si test1 colonne I remplie les condition alors il lance CDC0. Cependant, si la colonne J remplie elle aussi les conditions, il lance aussi CDC0 ( jusque là OK). Cependant j'aimerai que pour le test1 colonne I, le tableau soit collé en A3 ( jusque la tout marche), mais si J remplie la condition alors il va le copier en M3. Et ceci pour les colonnes de I à Y. (J sera en M3, K sera en Y3 et ainsi de suite, jusque Y soit en GK) dans le but que les Tableaux ne soit pas superposé les uns sur les autres.

J’espère m’être correctement exprimé

Alors, essaie de remplacer :

Range("A3").Select

par :

Cells(3, 12 * i - 119).Select

Mais c’est sans garantie : mon cerveau n’est pas assez puissant pour raisonner sans s’appuyer sur du concret…

Bonne chance !

Bye !

Bonsoir,

Merci j'ai trouvé toutes mes réponses a ce sujet.

J'ai cependant, une autre question.

Est ce qu'l existe une manière d'avoir une fenetre qui nous montre l'exéction de VBA afin de savoir où la macro en est exactement ?

En effet, j'ai une macro qui lance plusieurs macro sous de multiples conditions, le tout dans un ordre bien precis. Est il possible de visualiser ce qu'il est en train de traider?

Un genre de userform avec barre de progression (ou non si compliqué) avec un bouton details ou on aurait les etapes en cours d'exécution. (dans le genre d'instalation d'un programme Intel par exemple).

Merci par avance

Bonjour

Avec l'instruction :

Application.StatusBar = message

Tu feras apparaître la valeur de la variable "message" tout en bas, gauche de la fenêtre Excel, sur fond vert.

A toi de lui donner une valeur différente dans chaque sous-macro.

OK ?

Bonjour,

Merci pour vos réponses. Je continue mon code étape par étape

Bonne journée a vous.

Re bonjour, je reviens vers vous une erreur dans mon code

Sub test1()

Dim i As Integer

For i = 10 To 16

If ((Cells(5, i).Value Like "*H1a*") And (Cells(8, i).Value Like "*Effet_joules*") And (Cells(24, i).Value Like "*Est_Ouest*") And (Cells(27, i).Value Like "*S1*") = True) Then

Call CDC1

Else: MsgBox "error"

End If

Next i

End Sub

Je précise que CDC1 fonctionne correctement sans passer par ce code "test1".

Actuellement, meme si je remplie les conditions, le message "error" apparait et CDC1 n'est jamais lancé.

Pouvez vous m'aider ?

Je précise également, que la procédure CDC1 :

Sub CDC1() 'ZoneH1aEstOuestJouleS1
Application.DisplayAlerts = False
Dim wb As Workbook
Dim ws As Worksheet
Set wb = Workbooks.Open("H:\Stage\Données\Données Modifié\Courbes de Charge  & COP\H1a\Effet Joule\Est-Ouest\H1a-Joule-EstOuest-S1Ref.xls") 'ourvrir Fichier excel
Set ws = wb.Worksheets("H1a-Joule-EstOuest-S1Ref")
Application.CutCopyMode = False     'Vide le presse-papier
Range("ZoneH1aEstOuestJoule").Copy 'copie le tableau
Worksheets("H1a-Joule-EstOuest-S1Ref").Activate 'active la fenetre du fichier excel copier
Range("A1").Select 'selectionne la case A1
ActiveWorkbook.Close 'Ferme le fichier excel ouvert contenant le tableau copier
Worksheets("Zone").Activate
Call Si0 'Appelle la macro si case vide alors colle, sinon decalle au tableaux suivant
Application.DisplayAlerts = True
End Sub

ouvre donc un classeur avec un copier coller sur un autre classeur. J'ai l'impression que d'abord mon programme test1 n'arrive pas a lire correctement les cellules pour valider les conditions, que si dans l'aboslue test1 fonctionné il ne retournerai pas sur la bnne feuille de pour faire les tests suivant.

Si0 fonctionne aussi tres bien.

Pour eviter toute complications j'ai donc joint un zip, avec l'arborescence des fichiers. Je précise également que c'est une version tres alléger en réalité il ya beaucoups plus de fichier et de paramètre a prendre en compte (voir Matrice au démarage du fichier).

Au vue de la complexcité de ce que je demande, je peux repondre a toutes les questions , n'hesitez pas

De plus si vous avez des modifications pour accélerer l'ouverture, la copie du tableau, la colle, et la fermeture du tableau précédement copier, je suis preneur, car en réalité les tableaux font plus de 50 000 lignes, donc un peu long si l'ont fait la répétition des 12 fois !

Merci

Rechercher des sujets similaires à "import copier coller vide"