Je bloque en vba pour passer à la ligne

Fermé
MARCUSIO - 25 avril 2008 à 21:17
Le Pingou Messages postés 12225 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 6 décembre 2024 - 26 avril 2008 à 18:16
Bonjour,

je bloque en vba pour passer à la ligne ,en faites j'ai une feuille "formulaire" ou je remplie des données genre nom,prenom, age,etc...que je valide via un bouton macro.Et une feuille"Base de données" ou les données du formulaire s'enregistre .Mon problème est que quand j'enregistre une premiere fois ca va, mais si ma premiere fois n'est pas remplie completement, mon deuxieme enregistrement va combler les cellules vides de mon premier enregistrement.

J'espère avoir été claire.

AIDEZ-MOI SVP!!!!

voici ce que j'ai fait:

Sub transpose_dans_tableau()

'Atteindre le formulaire et memoriser les données
Sheets("formulaire").Select
Range("B6:B15").Select
Selection.Copy
' Test pour déterminer la ligne où coller les infos dans le tableau
Sheets("Base de données").Select
valeurC2 = Range("C2").Value
If valeurC2 = "" Then
Range("C2").Select
Else
Range("C1").Select
Selection.End(xlDown).Select
ligne_active_base = ActiveCell.Row
Range("C" & ligne_active_base + 1).Select

End If
'Memorise le n° de la ligne où coller les données
ligne_active_base = ActiveCell.Row
'Collage avec transition
Range("C" & ligne_active_base).Select
Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, _
Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
'Rendre vierge le formulaire
Sheets("Formulaire").Select
Range("B6:B15").Select
Selection.ClearContents
Range("B6").Select
'Retourner dans le tableau
Sheets("Base de données").Select
Range("C1").Select

'Atteindre le formulaire et memoriser les données
Sheets("formulaire").Select
Range("F6:F10").Select
Selection.Copy
' Test pour déterminer la ligne où coller les infos dans le tableau
Sheets("Base de données").Select
valeurM2 = Range("M2").Value
If valeurM2 = "" Then
Range("M2").Select
Else
Range("M1").Select
Selection.End(xlDown).Select
ligne_active_base = ActiveCell.Row
Range("M" & ligne_active_base + 1).Select

End If
'Memorise le n° de la ligne où coller les données
ligne_active_base = ActiveCell.Row
'Collage avec transition
Range("M" & ligne_active_base).Select
Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, _
Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
'Rendre vierge le formulaire
Sheets("Formulaire").Select
Range("F6:F10").Select
Selection.ClearContents
Range("F6").Select
'Retourner dans le tableau
Sheets("Base de données").Select
Range("M1").Select


'Atteindre le formulaire et memoriser les données
Sheets("formulaire").Select
Range("F14").Select
Selection.Copy
' Test pour déterminer la ligne où coller les infos dans le tableau
Sheets("Base de données").Select
valeurR2 = Range("R2").Value
If valeurR2 = "" Then
Range("R2").Select
Else
Range("R1").Select
Selection.End(xlDown).Select
ligne_active_base = ActiveCell.Row
Range("R" & ligne_active_base + 1).Select

End If
'Memorise le n° de la ligne où coller les données
ligne_active_base = ActiveCell.Row
'Collage avec transition
Range("R" & ligne_active_base).Select
Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, _
Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
'Rendre vierge le formulaire
Sheets("Formulaire").Select
Range("F14").Select
Selection.ClearContents
Range("F14").Select
'Retourner dans le tableau
Sheets("Base de données").Select
Range("R1").Select

'Atteindre le formulaire et memoriser les données
Sheets("formulaire").Select
Range("H7").Select
Selection.Copy
' Test pour déterminer la ligne où coller les infos dans le tableau
Sheets("Base de données").Select
valeurB2 = Range("B2").Value
If valeurB2 = "" Then
Range("B2").Select
Else
Range("B1").Select
Selection.End(xlDown).Select
ligne_active_base = ActiveCell.Row
Range("B" & ligne_active_base + 1).Select

End If
'Memorise le n° de la ligne où coller les données
ligne_active_base = ActiveCell.Row
'Collage avec transition
Range("B" & ligne_active_base).Select
Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, _
Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
'Rendre vierge le formulaire
Sheets("Formulaire").Select
Range("H7").Select
Selection.ClearContents
Range("H7").Select
'Retourner dans le tableau
Sheets("Base de données").Select
Range("B2").Select

'Atteindre le formulaire et memoriser les données
Sheets("formulaire").Select
Range("H10").Select
Selection.Copy
' Test pour déterminer la ligne où coller les infos dans le tableau
Sheets("Base de données").Select
valeurA2 = Range("A2").Value
If valeurA2 = "" Then
Range("A2").Select
Else
Range("A1").Select
Selection.End(xlDown).Select
ligne_active_base = ActiveCell.Row
Range("A" & ligne_active_base + 1).Select

End If
'Memorise le n° de la ligne où coller les données
ligne_active_base = ActiveCell.Row
'Collage avec transition
Range("A" & ligne_active_base).Select
Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, _
Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
'Rendre vierge le formulaire
Sheets("Formulaire").Select
Range("H10").Select
Selection.ClearContents
Range("H10").Select
'Retourner dans le tableau
Sheets("Base de données").Select
Range("A1").Select

'Atteindre le formulaire et memoriser les données
Sheets("formulaire").Select
Range("F12").Select
Selection.Copy
' Test pour déterminer la ligne où coller les infos dans le tableau
Sheets("Base de données").Select
valeurS2 = Range("S3").Value
If valeurS3 = "" Then
Range("S3").Select
Else
Range("S1").Select
Selection.End(xlDown).Select
ligne_active_base = ActiveCell.Row
Range("S" & ligne_active_base + 1).Select

End If
'Memorise le n° de la ligne où coller les données
ligne_active_base = ActiveCell.Row
'Collage avec transition
Range("S" & ligne_active_base).Select
Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, _
Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
'Rendre vierge le formulaire
Sheets("Formulaire").Select
Range("F12").Select
Selection.ClearContents
Range("F12").Select
'Retourner dans le tableau
Sheets("Base de données").Select
Range("S1").Select
End Sub
A voir également:

4 réponses

Le Pingou Messages postés 12225 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 6 décembre 2024 1 452
25 avril 2008 à 22:51
Bonsoir,
Je suppose que la ligne ("B6:B15").que vous copiez sur le la feuille ("Base de données") doit toujours être enregistrée sur la première ligne vide qui suit les enregistrements existants.....
Dans se cas voici le code à utilisé :

Sheets("Base de données").Select '---votre code

Range("C65536").End(xlUp).Offset(2, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
C'est tout, la ligne ("B6:B15") est en place.

Salutations.
Jean-Pierre
0
Le Pingou Messages postés 12225 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 6 décembre 2024 1 452
26 avril 2008 à 11:22
Bonjour,
J'ai regardé à nouveau votre demande et je constate que ma réponse n'est pas bonne.
Pouvez-vous expliquer avec un peu plus de détail la composition de votre "formulaire" .....
Et dans quelles positions les données doivent se trouver dans "Base de données" .....
A défaut une copie partiel devotre classeur sur www.cjoint.com serait plus profitable!
Merci.
0
Le Pingou Messages postés 12225 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 6 décembre 2024 1 452
26 avril 2008 à 13:29
Bonjour,
En attendant, j'ai déchiffré votre code et j'ai trouvez ceci :
Dans cette partie probablement une erreur :

'Atteindre le formulaire et memoriser les données
Sheets("formulaire").Select
Range("F12").Select
Selection.Copy
' Test pour déterminer la ligne où coller les infos dans le tableau
Sheets("Base de données").Select
valeurS2 = Range("S3").Value
If valeurS3 = "" Then
Range("S3").Select
Else

Il s’agit certainement de la cellule « S2 » et non « S3 »

Pour la suite j'attend votre réponse.
0
Le Pingou Messages postés 12225 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 6 décembre 2024 1 452
26 avril 2008 à 18:16
Bonjour,
Ci-dessous ma proposition.
J'évite l'aller et retour entre les 2 feuilles. Je chage une variablle avec toutes les données à transfèrer, ensuite sur ma "base_de_données" je cherche la première ligne vide du tableau et j'y enregistre les valeurs de ma variable et ensuite je réinitialise les plage de "Formulaire".
C'est une autre façon de faire, à vous de voir

Private Sub transfert_dans_tableau()
Dim tra()
Dim c As Integer
ReDim tra(18)
'Atteindre le formulaire et transfèrer les données dans variable "tra"
Sheets("formulaire").Select
tra(0) = Range("H10").Value
tra(1) = Range("H7").Value
tra(2) = Range("B6").Value
tra(3) = Range("B7").Value
tra(4) = Range("B8").Value
tra(5) = Range("B9").Value
tra(6) = Range("B10").Value
tra(7) = Range("B11").Value
tra(8) = Range("B12").Value
tra(9) = Range("B13").Value
tra(10) = Range("B14").Value
tra(11) = Range("B15").Value
tra(12) = Range("F6").Value
tra(13) = Range("F7").Value
tra(14) = Range("F8").Value
tra(15) = Range("F9").Value
tra(16) = Range("F10").Value
tra(17) = Range("F14").Value
tra(18) = Range("F12").Value
' -- vers feuille de stockage
Sheets("Base_de_données").Select
' trouver la première ligne vide qui suit dans le tableau et copier les données de la variable "tra"
nli = Range("C65536").End(xlUp).Offset(1, 0).Row
For c = 0 To 18
ActiveSheet.Cells(nli, (c + 1)) = tra(c)
Next c
' retour à la feuille de saisie des données et initialiser les plages
Sheets("Formulaire").Select
Range("B6:B15").ClearContents
Range("F6:F10").ClearContents
Range("F12").ClearContents
Range("F14").ClearContents
Range("H7").ClearContents
Range("H10").ClearContents
Range("A1").Select
End Sub

Bonne fin de semaine.
0