Probleme vba
domi4roues
Messages postés
82
Date d'inscription
Statut
Membre
Dernière intervention
-
foo -
foo -
bonjour a tous
Novice balbutient dans les vba d'excel je n'arrive pas à trouver mon erreur. C'est pourquoi je sollicite de l'aide.
J'ai créer un sorte de tableau de saisi ou dans les cellules je replis des infos. d'un clique sur un bouton elles vont remplir une base de donnée et en même temps efface les valeur dans ces cellules de tableau.
Voici le scripte que j'ai crue bon.
Sub nouveau_old()
' **** voir nouvelle procédure plus bas *****
' nouveau Macro
' Macro enregistrée le 30/1/2013
Sheets("bd").Select
Selection.Insert Shift:=xlDown
Sheets("nouveau").Select
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
Range("A2:N2").Select
Selection.Copy
Sheets("bd").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Sheets("nouveau").Select
Range("E8:E9").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = ","
Range("G8").Select
ActiveCell.FormulaR1C1 = ","
Range("G9").Select
ActiveCell.FormulaR1C1 = ","
Range("G13").Select
End Sub
' **** nouvelle procédure *****
Sub nouveau()
Dim prelivi As Long
With Sheets("bd")
' récupérer le numéro de la première ligne vide de la feuille [bd]
prelivi = .Cells(Rows.Count, 1).End(xlUp).Row + 1
' copie des données
Range("A2:N2").Copy
' coller uniquement les valeurs dans la plage adéquate
.Range("a" & prelivi & ":N" & prelivi).PasteSpecial Paste:=xlPasteValues
End With
' nettoyer le tableau d'entré
Range("C7,E7,G7,I7,C9,E9,G9,C11,E11,C14,G11,G14").ClearContents
Le défaut..... déjà un temps très long pour que la saisi entre dans la base. De plus des lignes paresse a l'écran reprenant les valeur des cellule qui votre remplir la base puis disparais en me rendent la main
Je remercie d'avant celui ou ceux qui l'éclairons sur mes erreur de débutant.
Je remercie
Novice balbutient dans les vba d'excel je n'arrive pas à trouver mon erreur. C'est pourquoi je sollicite de l'aide.
J'ai créer un sorte de tableau de saisi ou dans les cellules je replis des infos. d'un clique sur un bouton elles vont remplir une base de donnée et en même temps efface les valeur dans ces cellules de tableau.
Voici le scripte que j'ai crue bon.
Sub nouveau_old()
' **** voir nouvelle procédure plus bas *****
' nouveau Macro
' Macro enregistrée le 30/1/2013
Sheets("bd").Select
Selection.Insert Shift:=xlDown
Sheets("nouveau").Select
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
Range("A2:N2").Select
Selection.Copy
Sheets("bd").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Sheets("nouveau").Select
Range("E8:E9").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = ","
Range("G8").Select
ActiveCell.FormulaR1C1 = ","
Range("G9").Select
ActiveCell.FormulaR1C1 = ","
Range("G13").Select
End Sub
' **** nouvelle procédure *****
Sub nouveau()
Dim prelivi As Long
With Sheets("bd")
' récupérer le numéro de la première ligne vide de la feuille [bd]
prelivi = .Cells(Rows.Count, 1).End(xlUp).Row + 1
' copie des données
Range("A2:N2").Copy
' coller uniquement les valeurs dans la plage adéquate
.Range("a" & prelivi & ":N" & prelivi).PasteSpecial Paste:=xlPasteValues
End With
' nettoyer le tableau d'entré
Range("C7,E7,G7,I7,C9,E9,G9,C11,E11,C14,G11,G14").ClearContents
Le défaut..... déjà un temps très long pour que la saisi entre dans la base. De plus des lignes paresse a l'écran reprenant les valeur des cellule qui votre remplir la base puis disparais en me rendent la main
Je remercie d'avant celui ou ceux qui l'éclairons sur mes erreur de débutant.
Je remercie
6 réponses
Pour le temps de réponse, tu peux ajouter :
Application.ScreenUpdating = False au début de ton code.
De cette manière tout n'apparaîtra pas tout de suite à l'écran.
Pour le reste, pourrais-tu m'envoyer ton fichier pour que je puisse davantage situer ce dont tu as besoin ? (utilise le site https://www.cjoint.com/ très pratique)
Application.ScreenUpdating = False au début de ton code.
De cette manière tout n'apparaîtra pas tout de suite à l'écran.
Pour le reste, pourrais-tu m'envoyer ton fichier pour que je puisse davantage situer ce dont tu as besoin ? (utilise le site https://www.cjoint.com/ très pratique)
domi4roues
Messages postés
82
Date d'inscription
Statut
Membre
Dernière intervention
comment je joint le fichier y a t'il un lien que doit activer dans les prochains messages pour cjoint. cars je ne les trouve pas .Si ce n'est ce que vous avait mis
bonjour,
pour rentrer dans la base
.Cells(prelivi,"A").resize(1,14)=Sheets("nouveau").Range("A2:N2").Value
et tu supprimes:
Range("A2:N2").Copy
' coller uniquement les valeurs dans la plage adéquate
.Range("a" & prelivi & ":N" & prelivi).PasteSpecial Paste:=xlPasteValues
avec l'écran figé cpmme l'indique Kusco
copy-paste est extrèmement long et à éviter
pour rentrer dans la base
.Cells(prelivi,"A").resize(1,14)=Sheets("nouveau").Range("A2:N2").Value
et tu supprimes:
Range("A2:N2").Copy
' coller uniquement les valeurs dans la plage adéquate
.Range("a" & prelivi & ":N" & prelivi).PasteSpecial Paste:=xlPasteValues
avec l'écran figé cpmme l'indique Kusco
copy-paste est extrèmement long et à éviter
Je remercie les reponses mais je suis en déplacement . je test chacune samadi
encore merci Kusco. je joint Document joint: demandes_de_travaux_du_servic_maintenance_2014_2.2.0.xlsm
je n'assure pas tellement je n'est plus l'aide de mon fils alors le vieux fait ce qu'i l peut...
merci de regardé
je n'assure pas tellement je n'est plus l'aide de mon fils alors le vieux fait ce qu'i l peut...
merci de regardé
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Non Non michel_m il ne faut vous exclure. d'ailleurs expliquer moi ce que vous dénommez l'entré de base
merci
merci
Bonjour
Voila ta nouvelle macro
Sub nouveau()
Dim DerLig As Long
With Sheets("bd")
' récupérer le numéro de la première ligne vide de la feuille [bd]
DerLig = .Range("A" & Rows.Count).End(xlUp).Row + 1
' copie des données
Range("A2:N2").Copy
' coller uniquement les valeurs dans la plage adéquate
.Range("A" & DerLig).PasteSpecial xlPasteValues
End With
Application.CutCopyMode = False
End Sub
A+
Maurice
Voila ta nouvelle macro
Sub nouveau()
Dim DerLig As Long
With Sheets("bd")
' récupérer le numéro de la première ligne vide de la feuille [bd]
DerLig = .Range("A" & Rows.Count).End(xlUp).Row + 1
' copie des données
Range("A2:N2").Copy
' coller uniquement les valeurs dans la plage adéquate
.Range("A" & DerLig).PasteSpecial xlPasteValues
End With
Application.CutCopyMode = False
End Sub
A+
Maurice