S’arrêter à la première case vide de la colonne A

Bonjour,

Sur mon premier classeur, j’ai une liste de nom de département dans la colonne A.
J’ai écrit une macro qui va chercher la valeur de la cellule A15 dans un autre classeur, dont le nom est : département.xlsx. La macro va chercher dans la colonne A1 le nom du département pour fabriquer le nom du classeur dans laquelle elle va chercher la valeur en A15.
J’arrive à créer la macro pour le premier département (dont le nom est en A1). J’aimerais que la macro, quand elle est excécuter, le fasse pour les autres lignes : A2, A3, A4, etc. tant qu’il y a un nom de département dans la colonne A. Et s’arrête donc à la première case vide de la colonne A.

Merci pour te conseils !!!

Cordialement,
Olivier PIC

Bonjour

Pour connaître la dernière case pleine de la colonne A

Range("A1").end(xlDown)

Tu peux ensuite faire une boucle jusqu’à cette case

Bonjour,

Bonjour Doc

Un petit mémo (que je me sert toujours, car je suis feignant, et j’ai les bouts de doigts usés) :hugs:

'déclaration des variables

Dim derniereLigne As Long
Dim derniereColonne As Integer
Dim myRange As Range

Range("A" & Rows.Count).End(xlUp).Select 'sélection de la dernière cellule non vide de la colonne A

derniereLigne = Range("A" & Rows.Count).End(xlUp).Row 'n° de la dernière ligne non vide de la colonne A

Range("A" & Rows.Count).End(xlUp).Offset(1).Select 'sélection de la première cellule vide de la colonne A

derniereLigne = Range("A" & Rows.Count).End(xlUp).Row + 1 'n° de la première ligne vide de la colonne A

Set myRange = Range("A" & Rows.Count).End(xlUp) 'enregistrement de la dernière cellule non vide de la colonne A dans la variable myRange

myRange.Select 'sélection de la variable myRange

Cells(1, Columns.Count).End(xlToLeft).Select 'sélection de la dernière cellule non vide de la ligne 1

derniereColonne = Cells(1, Columns.Count).End(xlToLeft).Column 'n° de la dernière colonne non vide de la ligne 1

Cells(1, Columns.Count).End(xlToLeft).Offset(, 1).Select 'sélection de la première cellule vide de la ligne 1

derniereColonne = Cells(1, Columns.Count).End(xlToLeft).Column + 1 'n° de la première colonne vide de la ligne 1
1 J'aime

Bonjour
Merci bcp pour l aide.
Comment dois je faire pour faire la macro en boucle ?

-------- Message d’origine --------

Bonjour,
Commence déjà par mettre un classeur en PJ dans le poste et je te ferai le montage expliqué :wink:

Voici les 4 fichiers. Le fichier Recap est celui où j’ai écris une macro pour aller récupérer une donnée dans le premier classeur (Baillard Alexandre). J’aimerais donc que cette macro fasse la même opération sur la ligne suivante, pour aller récupérer la donnée dans le second classeur (Bamba Daouda). Etc.

Cordialement,
Olivier PIC

[http://wiki75p2/signature/aajeune.png]http://www.jeunesse2017.fr/

Olivier PIC
Directeur
Tél : 0237370879
Port : 0611450142
olivier.pic@apprentis-auteuil.orgmailto:olivier.pic@apprentis-auteuil.org

Territoire Centre
Région Nord Ouest
Notre Dame d’Avenir
Chateau des Vaux
Saint Maurice Sanit Germain
28240 La Loupe

Projets_vac_2017_18_BAILLART_Alexandre.xls (147 KB)

Projets_vac_2017_18_BAMBA_Daouda.xls (190 KB)

Projets_vac_2017_18_BETTINE_Bassem.xls (181 KB)

Re,

Il manquerais pas dés fois un petit classeur qui se nomme RECAP :thinking:

Oups ! le voici :slight_smile:

recap essai.xlsm (16.3 KB)

Re,
Bon je suppose que c’est le montant total qui est à récupérer (et non la cellule A1)
Alors, est il toujours à la même cellule de l’onglet “VAC HIVER BUDGET” en B22
car sur un classeur c’est B22 et sur les 2 autres c’est B42

De plus les classeurs sont protégés par MdP

Une question bien posée avec des renseignements corrects et des données fournies sans problèmes

                                                   **C'est le rêve et du temps gagné**

D’autre part lorsque vous allez rapatrier les données, les noms des cellules B11 et D11 sont présents
cela permet d’avoir un feuille REPAP vierge au départ avec récupération par boucle en ouvrant, piochant les données, fermer le classeur et ouvrir le suivant.

Bonjour,

A tester
les classeurs ainsi que RECAP doivent être dans le même dossier
On ouvre le classeur RECAP et on clique, le reste est automatique

Comme les montants sur deux classeurs ne sont pas sur la même cellule (le résultat est vide)

Module:

Sub Recap()

'Déclaration type de variable
Dim Repertoire As String, Fichier As String 'texte
Dim WB As Workbook 'classeur
Dim ws As Worksheet 'onglet
Dim i As Integer 'nombre entier
Dim Dossier As Object
Dim fso As Scripting.FileSystemObject
Dim FileItem As Scripting.File
Application.ScreenUpdating = False 'désactivation défilement écran

Sheets("Feuil1").Activate
Range("A2:B65000").ClearContents
i = 2
Set ws = ThisWorkbook.Worksheets("Feuil1")
Repertoire = ThisWorkbook.Path & "\" 'définit le répertoire de recherche
Fichier = Dir(Repertoire & "*.xls") 'spécifie la recherche pour le fichiers .xls
Set Dossier = CreateObject("Scripting.FileSystemObject").GetFolder(Repertoire)

  Do While Fichier <> "" 'boucle sur les fichiers du répertoire
    If ThisWorkbook.Name <> Fichier Then 'sauf sur ce fichier si dans même répertoire
      Set WB = Workbooks.Open(Repertoire & Fichier) 'ouvre chaque classeur
      ws.Cells(i, 1) = WB.Worksheets("Vac hiver budget").Range("B11") & " " & WB.Worksheets("Vac hiver budget").Range("D11") 'Regroupe Nom et Prénom
      ws.Cells(i, 2) = WB.Worksheets("Vac hiver budget").Range("B22") ' Montant TOTAL
      i = i + 1 'ajoute une ligne sur classeur destination (RECAP)
      WB.Close False 'referme le classeur sans sauvegarder
    End If
    Fichier = Dir 'Sélectionne le prochain classeur
  Loop
Range("A1").Select
End Sub

recap essai.xlsm (28,1 Ko)

Bonsoir,

Oui vous avez raison, il faut que je corrige les tableaux pour que le total soit toujours dans la case B22 (bon, le problème c’est que j’ai oublié le code de protection de la feuille…)

Quand j’exécute la macro, voici ce qu’il m’affiche :

[/uploads/db8237/original/2X/2/2e8c0f98b34a8adcd06fc3ccbdfba7e6426dc75e.png]

La ligne surlignée en jaune est la suivante :
ws.Cells(i, 1) = WB.Worksheets(“Vac hiver budget”).Range(“B11”) & " " & WB.Worksheets(“Vac hiver budget”).Range(“D11”) 'Regroupe Nom et Prénom

Sauriez ce que je dois faire pour que cela marche ?

Cordialement,
Olivier PIC

[http://wiki75p2/signature/aajeune.png]http://www.jeunesse2017.fr/

Olivier PIC
Directeur
Tél : 0237370879
Port : 0611450142
olivier.pic@apprentis-auteuil.orgmailto:olivier.pic@apprentis-auteuil.org

Territoire Centre
Région Nord Ouest
Notre Dame d’Avenir
Chateau des Vaux
Saint Maurice Sanit Germain
28240 La Loupe

Bonsoir

A la question:
Sauriez ce que je dois faire pour que cela marche ?

Eh bien fournir des classeurs identiques pour la récupération, avec ses données à reprendre renseignées, et si il a MdP, le fournir pour l’incrémenter dans la macro pour déprotéger et protéger en fin d’opération

Ensuite, si vous avez bien lu les instructions
A tester
les classeurs ainsi que RECAP doivent être dans le même dossier
On ouvre le classeur RECAP et on clique, le reste est automatique

les classeurs ainsi que RECAP doivent être dans le même dossier

1 J'aime

Ok ! merci bcp pour l’aide.
Je m’aperçois que je suis un peu juste en VBA, proposeriez-vous une formation en ligne pour débutant ?

Cordialement,
Olivier PIC

[http://wiki75p2/signature/aajeune.png]http://www.jeunesse2017.fr/

Olivier PIC
Directeur
Tél : 0237370879
Port : 0611450142
olivier.pic@apprentis-auteuil.orgmailto:olivier.pic@apprentis-auteuil.org

Territoire Centre
Région Nord Ouest
Notre Dame d’Avenir
Chateau des Vaux
Saint Maurice Sanit Germain
28240 La Loupe

Bonjour,

Faites un petite recherche sur YOUTUBE avec tutoriel VBA EXCEL
Vous aurez des tutoriels plus ou moins explicite, pour débutant, initié et pro.
Les sujets sont tellement vastes …