Demande d'aide en VBA

Mana81

XLDnaute Nouveau
Bonjour,
J'ai besoin de votre aide en VBA.
J'ai deux fichiers Excel : "Dossiers Logo Paramédicaux" et "Récapitulatif".
J'encode des informations dans le 1er fichier et je souhaiterai que ces données soient ajoutées dans le 2ème fichier. Il ne s'agit pas ici simplement d'un copier-coller.
Je souhaiterai que ces données soient ajoutées à la suite de tout ce qui existe déjà dans le fichier "Récapitulatif"; donc il faut en fait lui dire de rechercher la dernière cellule vide de la colonne A dans le fichier "Récapitulatif" et coller les données à partir de cette cellule +1.
Pourquoi +1 : car je souhaiterai en effet qu'entre chaque nouvelle donnée, je puisse insérer une ligne à travers tout le tableau en gris foncé.
Je vous joins les deux fichiers.
Merci d'avance pour votre aide.
Bien à vous,
 

Pièces jointes

  • DOSSIERS LOGO PARAMEDICAUX.xlsx
    10.7 KB · Affichages: 21
  • recapitulatif copie.xlsx
    9.6 KB · Affichages: 15

JM27

XLDnaute Barbatruc
Bonsoir
J'apprécie les gens qui veulent comprendre et ne pas copier "bêtement" des lignes de programme:)
Voir les lignes documentées dans la macro
 

Pièces jointes

  • recapitulatif copie (3).xlsm
    20.9 KB · Affichages: 21
Dernière édition:

Mana81

XLDnaute Nouveau
Bonjour
Oui tout a fait
.Range("A65536") est fait pour Excel 2003 ( 65556 ligne)
Pour excel 2007 et après , il y en a plus d'un million (je crois)
Donc rows count est fonctionnel pour n'inporte quel excel


J'ai ajouté ceci, mais je recontre un problème:
il ne vide plus mon fichier dossiers logo paramedicaux
pouvez-vous regarder svp?

Sub transfert()

Workbooks.Open Filename:="K:\319-Qualité\Qualité\Marianne\dossiers soins de santé\DOSSIERS LOGO PARAMEDICAUX.xlsx"
Windows("DOSSIERS LOGO PARAMEDICAUX.xlsx").Activate

' déclaration des variables numériques (as long)
Dim Derligne As Long
Dim DerligneBaseDeDonnées As Long

' Avec Ce Fichier et cette feuille récapitulatif
' désormais le point (.) remplace cet ensemble
With ThisWorkbook.Sheets("RECAPITULATIF")

' je cherche la dernière ligne dans mon fichier Récapitulatif et la décale de deux lignes ( pour avoir une ligne vide)
Derligne = .Range("A" & Rows.Count).End(xlUp).Row + 2

' je mets un message d'erreur au cas où le fichier de données n'est pas ouvert ou le nom est changé
On Error Resume Next
DerligneBaseDeDonnées = Workbooks("DOSSIERS LOGO PARAMEDICAUX.xlsx").Sheets("DONNEES PARAMEDICAUX").Range("A" & Rows.Count).End(xlUp).Row

' s'il y a une erreur je sors du programme
If Err <> 0 Then
MsgBox " le fichier de données n'est pas ouvert ou son nom n'est pas : DOSSIERS LOGO PARAMEDICAUX.xlsx ou la feuille de données ne se nomme pas : DONNEES PARAMEDICAUX"
Exit Sub
End If

' si dans la feuille de données, la cellule A2 n'est pas documentée ( pas de données à transférer) , je sors du programme
If Workbooks("DOSSIERS LOGO PARAMEDICAUX.xlsx").Sheets("DONNEES PARAMEDICAUX").Range("A2") = "" Then Exit Sub

' je copie les données de la feuille données vers la feuille récap
Workbooks("DOSSIERS LOGO PARAMEDICAUX.xlsx").Sheets("DONNEES PARAMEDICAUX").Range("A2:I" & DerligneBaseDeDonnées).Copy Destination:=.Range("A" & Derligne)

' Je vide la feuille de données après transfert
Workbooks("DOSSIERS LOGO PARAMEDICAUX.xlsx").Sheets("DONNEES PARAMEDICAUX").Range("A2:I" & DerligneBaseDeDonnées) = ""

' je colorie la ligne vide en gris
.Range("A" & Derligne - 1 & ":I" & Derligne - 1).Interior.ThemeColor = xlThemeColorDark1
.Range("A" & Derligne - 1 & ":I" & Derligne - 1).Interior.TintAndShade = -0.149998474074526

Workbooks("DOSSIERS LOGO PARAMEDICAUX.xlsx").Close False
End With


End Sub
 

Mana81

XLDnaute Nouveau
J'ai ajouté ceci, mais je recontre un problème:
il ne vide plus mon fichier dossiers logo paramedicaux
pouvez-vous regarder svp?

Sub transfert()

Workbooks.Open Filename:="K:\319-Qualité\Qualité\Marianne\dossiers soins de santé\DOSSIERS LOGO PARAMEDICAUX.xlsx"
Windows("DOSSIERS LOGO PARAMEDICAUX.xlsx").Activate

' déclaration des variables numériques (as long)
Dim Derligne As Long
Dim DerligneBaseDeDonnées As Long

' Avec Ce Fichier et cette feuille récapitulatif
' désormais le point (.) remplace cet ensemble
With ThisWorkbook.Sheets("RECAPITULATIF")

' je cherche la dernière ligne dans mon fichier Récapitulatif et la décale de deux lignes ( pour avoir une ligne vide)
Derligne = .Range("A" & Rows.Count).End(xlUp).Row + 2

' je mets un message d'erreur au cas où le fichier de données n'est pas ouvert ou le nom est changé
On Error Resume Next
DerligneBaseDeDonnées = Workbooks("DOSSIERS LOGO PARAMEDICAUX.xlsx").Sheets("DONNEES PARAMEDICAUX").Range("A" & Rows.Count).End(xlUp).Row

' s'il y a une erreur je sors du programme
If Err <> 0 Then
MsgBox " le fichier de données n'est pas ouvert ou son nom n'est pas : DOSSIERS LOGO PARAMEDICAUX.xlsx ou la feuille de données ne se nomme pas : DONNEES PARAMEDICAUX"
Exit Sub
End If

' si dans la feuille de données, la cellule A2 n'est pas documentée ( pas de données à transférer) , je sors du programme
If Workbooks("DOSSIERS LOGO PARAMEDICAUX.xlsx").Sheets("DONNEES PARAMEDICAUX").Range("A2") = "" Then Exit Sub

' je copie les données de la feuille données vers la feuille récap
Workbooks("DOSSIERS LOGO PARAMEDICAUX.xlsx").Sheets("DONNEES PARAMEDICAUX").Range("A2:I" & DerligneBaseDeDonnées).Copy Destination:=.Range("A" & Derligne)

' Je vide la feuille de données après transfert
Workbooks("DOSSIERS LOGO PARAMEDICAUX.xlsx").Sheets("DONNEES PARAMEDICAUX").Range("A2:I" & DerligneBaseDeDonnées) = ""

' je colorie la ligne vide en gris
.Range("A" & Derligne - 1 & ":I" & Derligne - 1).Interior.ThemeColor = xlThemeColorDark1
.Range("A" & Derligne - 1 & ":I" & Derligne - 1).Interior.TintAndShade = -0.149998474074526

Workbooks("DOSSIERS LOGO PARAMEDICAUX.xlsx").Close False
End With


End Sub


J'ai trouvé; j'avais oublié d'enregister ma feuille vide
j'ai ajouté ceci
ActiveWorkbook.Save
 

JM27

XLDnaute Barbatruc
Bonsoir
Pour t'aider à dépanner comme tu es débutant ( c'est toi qui le dit ;)):
il existe une possibilité de dérouler la routine en pas à pas , cela te permet de visualiser le déroulement de la macro.
et aussi la touche F1 qui est l'aide VBA ( tu sélectionnes un élément de la ligne ) et tu as la réponse parfoiso_O
mais peut être le sais tu ?
 

Mana81

XLDnaute Nouveau
Bonsoir
Pour t'aider à dépanner comme tu es débutant ( c'est toi qui le dit ;)):
il existe une possibilité de dérouler la routine en pas à pas , cela te permet de visualiser le déroulement de la macro.
et aussi la touche F1 qui est l'aide VBA ( tu sélectionnes un élément de la ligne ) et tu as la réponse parfoiso_O
mais peut être le sais tu ?

Bonjour,
oui je fais F8, c'est bien cela?
j'avais pas pensé à l'aide. cela peut en effet être bien utile.
merci pour vos bons conseils !
 

Discussions similaires

Statistiques des forums

Discussions
312 197
Messages
2 086 104
Membres
103 117
dernier inscrit
augustin.morille