[Résolu] Aide erreur collage entre onglets d'un classeur - Dim Lg

RG75

XLDnaute Nouveau
Bonjour à toutes et à tous,

Je fais appel à la communauté excel-downloads concernant un code VBA.
Dans le cadre d'un personnel, je suis en train de mettre en place un fichier Excel très important qui permettra de gagner un temps conséquent de saisie pour près de 30 personnes et d'améliorer la fiabilité (contrôles via validation de données & formules).

J'ai volontairement simplifié ce fichier Exemple que je joins au message.
Le fil directeur du classeur Excel est le suivant :
1) Je renseigne les données dans mon questionnaire, cela complète une ligne dans un 2e onglet
2) Je lance la macro qui copie et colle cette ligne du 2e onglet dans un 3e onglet "CLIENTS" (soit ajout)

Je rencontre cependant une difficulté sur cette macro qui copie/colle les données dans la base clients.
Le collage s'effectue bien pour le 1er client, mais pour les suivants en dessous, ce problème apparait :
toutes les lignes précédemment collées via cette macro voient leur contenu se transformer pour être égal à celui de la dernière ligne collée.

Le code utilisé est créé dans un module et cette macro est affectée à un bouton "GENERER".
Le voici :
Sub GENERER()
Dim Lg%
Lg = Sheets("CLIENTS").Range("F65536").End(xlUp).Row + 1
Sheets("support").Range("E5:L5").Copy Destination:= _
Sheets("CLIENTS").Range("a" & Lg)
End Sub

J'ai aussi créé une macro, affectée à un second bouton, qui réinitialise les données du formulaire et du 2e onglet :
- d'une part pour simplifier les futures saisies
- et d'autre part dans l'espoir de faire comprendre à la macro qu'il y a un nouvel enregistrement et donc indépendance entre les enregistrements, qu'il ne faut donc pas modifier...

Son code est le suivant :
Sub Réinitialiser()
Sheets("CREATION").Range("F5:F7").ClearContents
Sheets("CREATION").Range("F16:F20").ClearContents
Sheets("support").Range("K5:L5").ClearContents
End Sub

En espérant vraiment que l'un d'entre vous puisse m'aider corriger ce code qui comprend sans doute une erreur de ma part. Toute bribe d'info ou idée serait la bienvenue !
Merci d'avance !!
Bonne journée (malgré le froid) !
 
Dernière édition:

frangy

XLDnaute Occasionnel
Re : Aide erreur collage entre onglets d'un classeur - Dim Lg

Bonjour,

En l’état, ta procédure GENERER effectue la copie des formules de la plage E5 :L5 de la feuille "support" vers la feuille "CLIENTS".
La formule restant toujours la même (=CREATION!$F$5 par exemple dans support!$E$5), la valeur de toutes les cellules collées sera identique.
Il suffit donc de copier les valeurs (et non plus les formules) pour avoir un résultat correct.
Code:
Sub GENERER()
Dim Lg%
    Lg = Sheets("CLIENTS").Range("F65536").End(xlUp).Row + 1
    Sheets("support").Range("E5:L5").Copy
    Sheets("CLIENTS").Range("a" & Lg).PasteSpecial Paste:=xlPasteValues
    MsgBox "Correctement ajouté!"
End Sub

A+
 

Fred0o

XLDnaute Barbatruc
Re : Aide erreur collage entre onglets d'un classeur - Dim Lg

Bonjour RG75,

En fait, tu colais dans la feuille "CLIENTS", les formules qui te renvoyaient dans ta feuille de "CREATION". Donc, à chaque nouvelle saisie, tu changeais les valeurs de la feuille "CLIENTS".

Pour que ça marche, il te faut "Copier" - "Collage spécial" - "Valeurs". Ce que j'ai fait en modifiant tamacro comme ceci :
VB:
Sub GENERER()
    Dim Lg%
    Lg = Sheets("CLIENTS").Range("F65536").End(xlUp).Row + 1
    Sheets("support").Range("E5:L5").Copy
    Sheets("CLIENTS").Range("a" & Lg).PasteSpecial (xlPasteValues)
    MsgBox "Correctement ajouté!"
End Sub

A+
 

RG75

XLDnaute Nouveau
Re : Aide erreur collage entre onglets d'un classeur - Dim Lg

Bonjour à vous deux,
Testé et cela fonctionne, merci pour cette réponse très rapide !
Petit inconvénient cependant :
Je souhaitais volontairement que la ligne créée dans "CLIENTS" soit en couleur de remplissage grise (cette couleur ne devant être changée manuellement qu'après contrôle ultérieur).

J'ai pensé à un code du type "With Selection.Interior" mais la ligne a sélectionner n'est pas celle de l'onglet support mais la nouvelle de CLIENTS.

Code proposé:
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.249977111117893
.PatternTintAndShade = 0
End With

Cet inconvénient peut-il être surmonté facilement?
 

Fred0o

XLDnaute Barbatruc
Re : Aide erreur collage entre onglets d'un classeur - Dim Lg

Re-bonjour,

Voici comment modifier le code :
VB:
Sub GENERER()
    Dim Lg%
    Lg = Sheets("CLIENTS").Range("F65536").End(xlUp).Row + 1
    Sheets("support").Range("E5:L5").Copy
    Sheets("CLIENTS").Range("a" & Lg).PasteSpecial (xlPasteValues)
    Sheets("CLIENTS").Range("a" & Lg).PasteSpecial (xlPasteFormats)
    MsgBox "Correctement ajouté!"
End Sub

A+
 

Discussions similaires

Réponses
3
Affichages
586

Statistiques des forums

Discussions
312 229
Messages
2 086 423
Membres
103 206
dernier inscrit
diambote