Valeur des noms de fichiers dans une cellule : comment créer une boucle

Bonjour à tous et à toutes,

J'ai adapté un programme à mes fichiers mais je n'arrive pas à définir une boucle . Je m'explique (enfin je vais essayer) J'ai un fichier source (tableau 2024). Si la colonne L contient une valeur, je copie les colonnes J à A , j'ouvre le fichier dont le nom se trouve sur la même ligne en colonne I et je copie les données. Je sauvegarde et ferme le fichier destination (Limoges). ... Bien sûr, il faut que le fichier destination soit fermé pour ne pas perdre les données si quelqu'un d'autre travaille dessus (msgbox fait manque la sortie sans effacer ) et qu'il soit dans le même répertoire que le fichier source (msgbox fait). Jusqu'ici tout va bien....Mais j'ai plusieurs fichiers "destination" en fonction de la colonne I. J'aimerai que le programme prenne la valeur (colonne i) qui correspond à la condition col L non vide, et ouvre le fichier dont il a récupéré le nom pour y copier les données. Et tout cela sur neuf noms de fichiers différents, par une boucle Do while peut être. Quelqu'un pourrait il m'aider? J'ai trouvé des infos mais je n'arrive pas à intégrer simplement et proprement le tout dans le code. Comment lui dire que le nom du fichier est dans la cellule I ligne en fonction de la cellule J validée non vide. Comment également valider en une seule fois la totalité des mises a jour dans le msgbox. Voilà, je vous ai perdu. Merci pour votre aide, je tourne en rond depuis des jours. Je vous souhaite également de bonnes fêtes de fin d'année.

17limoges.xlsm (35.71 Ko)
14tableau-2024.xlsm (52.76 Ko)

Bonjour Eosine et

Ou est ce fameux code dans lequel vous n'arrivez pas à définir une boucle

Je n'en vois pas dans lequel vous ouvrez le fichier de destination !?

Nota : Attention votre fichier 2024 semble corrompu, dans VBA Project il affiche des feuilles qui n'en sont pas...

A+

Bonjour BrunoM45,

J'ai repris le fichier TABLEAU 2024. J'ai tellement testé de possibilités que je n'avais pas remarqué les feuilles manquantes. Je suis repartie sur une base plus saine

Le programme en question est sur la feuille archive (Private Sub ENVOI_Click() ). Je n'arrive pas à boucler sur les 9 feuilles des villes mais juste sur une (fich1 = ActiveWorkbook.Name fich2 = "LIMOGES.xlsm") Comment déclarer la variable car elle est déterminer en fonction de la cellule J non vide.

Merci tout de même d'avoir pris la peine de regarder mon post.

@+


Oups avec le nouveau fichier c'est mieux. Non?

10tableau-2024.xlsm (39.99 Ko)

Bonjour à tous,

Bien, je pense que mon fichier est tellement nul que personne ne peut m'aider. Je viens de corriger des incohérences et continuer le programme.

Ce que j'aimerai faire :

  1. Vérifier si la colonne L est non vide, cela valide les données entrées dans les col de A à I (OK dans le code qui fonctionne)
  2. Prendre la valeur de L et filtrer les colonnes répondant aux conditions 1 et 2 'il ne prend qu'une ligne pas toutes celles répondant aux deux critères)
  3. Copier les colonnes et lignes filtrées J ai mis entirerow mais comme je ne veux pas qu il recopie L je vais devoir changer
  4. Prendre valeur I et ouvrir le classeur correspondant réussi pour un classeur mais pas pour tous
  5. Coller le tout sur la dernières lignes du classeur destination OK pour un classeur
  6. Sauvegarder et fermer le classeur destination OK pour un classeur
  7. Couper coller la ligne sur l'onglet archive du fichier source OK pour un classeur
  8. Recommencer l'opération tant qu'une cellule L est cochée sur tout les classeur destinations. pas encore fonctionnel

J'ai essayé de nettoyer encore les données pour rester dans la discrétion et certaines données étaient toujours erronées dans le code. J'ai rajouté la suppression des doublons (valeur col 1 à 3) dans le workbook.open du classeur de destination. Tous les classeurs destination sont identiques dans leur forme et code. J'ai également mis des commentaires dans le vba pour expliquer au maximum les lignes de code.

Voilà, j'espère que quelqu un pourra m'aider. Si le code est vraiment nul, dites le moi n'hésitez pas car on apprend de ces erreurs.

Je vous souhaite de bonnes fêtes

12limoges.xlsm (80.68 Ko)
10londres.xlsm (80.68 Ko)
11tableau-2024.xlsm (46.91 Ko)

Eosine

Bonjour,

J'ai essayé de contourner mon problème de boucle est répétant le programme de transfert pour chaque classeur . J'aimerai qu'Excel teste si la cellule est non vide avant de le lancer mais il ne veut pas et lance quand même la Macro (feuille archive). Merci. Eosine

Sub CommandButton1_Click()Dim Cell As Range
Dim lig As Long
Dim col As String
Dim NbrLig As Long
Dim NumLig As Long
col = "L" ' colonne données non vides à tester'
NumLig = 1 'le N° de la 1er ligne de données en comptant la ligne 1 = 0
'Sélectionne l'onglet ARCHIVE
With Sheets("ARCHIVE") 'feuille source'
NbrLig = .Cells(65536, col).End(xlUp).Row

For lig = 2 To NbrLig 'n° de la 1ere ligne de données'
If .Cells(lig, col).Value <> "" Then 'ligne teste colonne L non vide c'est là que je m embrouille
NumLig = NumLig + 1
    For Each Cell In Range("i2:i150")'colonne à tester
        If Cell.Value = "LIMOGES" Then
         Call LIMOGES
         End If'
            If Cell.Value = "PARIS" Then
            Call PARIS
            End If
                If Cell.Value = "LONDRES" Then
                Call LONDRES
                End If
                    If Cell.Value = "MARSEILLE" Then
                    Call MARSEILLE
                    End If

Next Cell
NexT
End With
End sub
Rechercher des sujets similaires à "valeur noms fichiers comment creer boucle"