copier coller avec bouton rafraichir

nintendo

XLDnaute Nouveau
Bonjour,

Je commence le vba excel et j’aurais besoin d’aide concernant une macro .

Son but est de faire un copier coller entre deux feuilles excel dès que l’on clique sur un
bouton rafraichir mais sans recopier toutes les données à chaque fois. Les données à copier sont sur dans la feuille 1 sur laquelle j’ai 11 colonnes.
Pour ne pas recopier les lignes déjà copiées, je regarde sur la feuille 2 la première ligne vide et je vais prendre les données de cette ligne jusqu’à la première ligne vide de la feuille 1.

Voici le code que j’ai fait, je sui conscient qu’il doit y avoir beaucoup d’erreurs mais je ne réussis pas à les corriger, je débute à peine… Par exemple pour moi "A" & I veut dire la ligne i de la colonne 1, je ne suis pas du tout sur de cette écriture.

Je voudrais aussi faire un bouton rafraichir dans la feuille 2 mais je n’arrive pas à l’intégrer directement sur la feuille excel. J’utilise une useform mais ça me l’affiche dans une autre fenêtre.

Sub actualiser()
Sheets("feuille2").Select
i = Range("A2").Select
DO i=ActiveCell.Offset(1,0).Select While NOT(isempty(i))

Sheets.("feuille1").Select
k = Range("A2").Select
DO k=ActiveCell.Offset(1,0).Select While NOT(isempty(k))
Range(["A" & i] : ["J" & k].Select
Range("A" & k).Activate
Selection.Copy
Sheets("feuille2").Select
Range("A" & i).Select
ActiveSheet.Paste
End Sub

Merci d’avance pour votre aide !
 

CBernardT

XLDnaute Barbatruc
Re : copier coller avec bouton rafraichir

Bonjour nintendo et le forum,

Une syntaxe possible :

Sub actualiser()
Dim Derlig1 As Integer, Derlig2 As Integer, Plage As Range
With Sheets("Feuil2")
Derlig2 = .Range("A65000").End(xlUp).Row
End With
With Sheets("Feuil1")
Derlig1 = .Range("A65000").End(xlUp).Row
Set Plage = .Range(.Range("A" & Derlig2 + 1), .Range("K" & Derlig1))
Plage.Copy
End With
With Sheets("Feuil2")
.Range(.Range("A" & Derlig2 + 1), .Range("k" & Derlig1)) = Plage.Value
End With
End Sub
 

nintendo

XLDnaute Nouveau
Re : copier coller avec bouton rafraichir

Merci beaucoup pour la rapidité! je vais aller tester ça.

Aurais-tu une idée pour le bouton que je voudrais insérer dans la feuille 2 qui permettrait d'importer les nouvelles données mises dans la feuille1?

Merci
 

CBernardT

XLDnaute Barbatruc
Re : copier coller avec bouton rafraichir

Re,

Pour avoir une aide directe, il suffit, lorsque l'on est dans l'éditeur VBA, de sélectionner le mot sur lequel on veut plus de précision et de faire la commande F1 sur le clavier.
 

nintendo

XLDnaute Nouveau
Re : copier coller avec bouton rafraichir

Merci, c'est bon à savoir!

J'essaie maintenant de soustraire deux dates sur toutes les lignes du tableur.
Dim i As Integer
nblignes = .Range("A65000").End(xlUp).Row
J'ai tapé cela: For i = 0 To nblignes
Range("C" & i).Value = Range("B" & i).Value - Range("A" & i).Value
Next i

j'ai une erreur de compilation, pouvez vous me dire si ce que j'ai tapé est faux?

Merci
 
Dernière édition:

CBernardT

XLDnaute Barbatruc
Re : copier coller avec bouton rafraichir

re,

Changer éventuellement le nom de la feuille et le point de départ de la boucle, ici ligne 2 mais cela ne peut pas être la ligne 0 :
Essaye ce code :

Sub macro()
Dim i As Integer, Nblignes As Integer
With Sheets("Feuil2")
Nblignes = .Range("A65000").End(xlUp).Row
For i = 2 To Nblignes
.Range("C" & i).Value = .Range("B" & i).Value - .Range("A" & i).Value
Next i
End With
End Sub
 

nintendo

XLDnaute Nouveau
Re : copier coller avec bouton rafraichir

J'ai inseré ton code puis j'ai tapé dans la feuille:
17:00 19:00
03:07 04:02
12:19 15:08

en A et B et j'ai obtenu
0.038194444
0.117361111
dans la C.

Je n'ai pas de résultat pour C1 mais c'est normal
 
Dernière édition:

nintendo

XLDnaute Nouveau
Re : copier coller avec bouton rafraichir

Merci, ça fonctionne très bien!

Je me suis dit qu'au lieu de rentrer les heures à la main je pourrais faire une macro qui, dès que l'on clique sur une cellule, affiche l'heure automatiquement.

Voici ce que j'ai fait:
Je précise que les colonnes A et B auront le même nombre de lignes remplies.

Sub afficher_heure(ByVal Target As Range)
Nblignes = .Range("A65000").End(xlUp).Row
If Not Intersect(Target, Range("A2:A& Nblignes || B2:A& Nblignes")) Is Nothing Then ActiveCell.Value = Now()
Selection.NumberFormat = "h:mm"
End Sub

Je dois avoir un problème d'écriture avec les "" mais je ne vois pas trop.
J'ai de plus essayé un cas plus simple: par exemple "A2:A10" mais dès que je clique sur une cellule celà ne fonctionne pas.

En fait, je n'arrive pas à lancer cette macro car elle n'est pas présente quand je fais macro et quand je regarde dans la liste des macros.

Merci beaucoup pour l'aide apportée :)
 

CBernardT

XLDnaute Barbatruc
Re : copier coller avec bouton rafraichir

Bonjour,

La macro évènementielle est activée par un double click dans les colonnes A ou B.

1- Après un double click dans la colonne A, elle inscrit l'heure dans la cellule active.
2- Après un double click dans la colonne B, elle inscrit l'heure dans la cellule active puis inscrit la différence B-A dans la colonne C.
 

Pièces jointes

  • Heures.xls
    24.5 KB · Affichages: 67
  • Heures.xls
    24.5 KB · Affichages: 70
  • Heures.xls
    24.5 KB · Affichages: 69

nintendo

XLDnaute Nouveau
Re : copier coller avec bouton rafraichir

Bonjour,

Un énorme pour merci pour ta réactivité et pour ton aide!

En revanche, j'ai de nouveau un problème sur une macro pourtant assez simple.


Sub time()


With Sheets("Sheet1")
Dim Nblignes As Integer
Dim i As Integer
Nblignes = .Range("A65000").End(xlUp).Row
For i = 2 To Nblignes

If .Range("A" & i).Value = "toto" Then .Range("B" & i).Value = "dupont"
ElseIf .Range("A" & i).Value = "toto1" Then .Range("B" & i).Value = "dupont1"
ElseIf .Range("A" & i).Value = "toto2" Then .Range("B" & i).Value = "dupont2"
Else: .Range("B" & i).Value = ""
Next i
End If
End With
End Sub

J'ai une erreur lors de la compilation me disant "else without if" Je ne comprends pas vraiment cette erreur.

Merci d'avance.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
314 631
Messages
2 111 391
Membres
111 120
dernier inscrit
Barthelemius