Macro copie cellules
Résolu/Fermé
ram43
Messages postés
25
Date d'inscription
mardi 15 janvier 2013
Statut
Membre
Dernière intervention
12 mars 2018
-
2 mars 2018 à 12:13
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 - 12 mars 2018 à 12:50
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 - 12 mars 2018 à 12:50
A voir également:
- Macro copie cellules
- Copie cachée - Guide
- Formule excel pour additionner plusieurs cellules - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Copie écran samsung - Guide
- Super copie - Télécharger - Gestion de fichiers
3 réponses
ram43
Messages postés
25
Date d'inscription
mardi 15 janvier 2013
Statut
Membre
Dernière intervention
12 mars 2018
55
2 mars 2018 à 13:09
2 mars 2018 à 13:09
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
6 mars 2018 à 16:46
6 mars 2018 à 16:46
Bonjour,
Pour faire ce que tu veux, il suffit de se servir de l’événement Feuille BeforeDoubleClick
Tu fais Alt F11 pour allez dans le module de ta feuille 7 et mettre ce code qui se déclenchera au double clic sur les chauffeurs, les tracteurs et les remorques:
Voila, ya pas plus simple!
Pour faire ce que tu veux, il suffit de se servir de l’événement Feuille BeforeDoubleClick
Tu fais Alt F11 pour allez dans le module de ta feuille 7 et mettre ce code qui se déclenchera au double clic sur les chauffeurs, les tracteurs et les remorques:
Option Explicit Dim nom As String Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Intersect(Target, Range("A3:A8")) Is Nothing Then nom = Target.Value extractionMots Range("C23").Value = nom 'chauffeur End If If Not Intersect(Target, Range("B3:B7")) Is Nothing Then Range("C24").Value = Target.Value 'tracteur End If If Not Intersect(Target, Range("C3:C7")) Is Nothing Then Range("E24").Value = Target.Value 'remorque End If End Sub 'Extraire les données séparées par un espace dans une chaine de caractères Sub extractionMots() Dim Tableau() As String Dim i As Integer 'découpe la chaine en fonction des espaces " " 'le résultat de la fonction Split est stocké dans un tableau Tableau = Split(nom, " ") 'boucle sur le tableau pour visualiser le résultat For i = 0 To UBound(Tableau) 'Le résultat s'affiche dans la fenêtre d'execution de l'éditeur de macros Debug.Print Tableau(i) Next i nom = Tableau(0) 'nom du chauffeur seul End Sub
Voila, ya pas plus simple!
ram43
Messages postés
25
Date d'inscription
mardi 15 janvier 2013
Statut
Membre
Dernière intervention
12 mars 2018
55
6 mars 2018 à 16:54
6 mars 2018 à 16:54
Bonjour cs_Le Pivert,
Merci pour ta réponse.
Je vais lire et essayer de comprendre ça comme il faut pour pourvoir l'intégrer à mon macro.
Merci pour ta réponse.
Je vais lire et essayer de comprendre ça comme il faut pour pourvoir l'intégrer à mon macro.
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
6 mars 2018 à 17:03
6 mars 2018 à 17:03
pour pourvoir l'intégrer à mon macro.
Tu n'as rien à integrer a tes macros!
c'est une macro qui se déclenche au double clic sur une cellule!
voir ceci pour mieux comprendre les événements feuille:
https://silkyroad.developpez.com/VBA/EvenementsFeuille/#LI
@+
Tu n'as rien à integrer a tes macros!
c'est une macro qui se déclenche au double clic sur une cellule!
voir ceci pour mieux comprendre les événements feuille:
https://silkyroad.developpez.com/VBA/EvenementsFeuille/#LI
@+
ram43
Messages postés
25
Date d'inscription
mardi 15 janvier 2013
Statut
Membre
Dernière intervention
12 mars 2018
55
6 mars 2018 à 17:11
6 mars 2018 à 17:11
Ha oui en effet je ne suis pas du tout familier avec les événements feuille.
Je vais voir si c'est plus clair avec un peu de lecture sur le sujet.
Merci.
Je vais voir si c'est plus clair avec un peu de lecture sur le sujet.
Merci.
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
6 mars 2018 à 17:13
6 mars 2018 à 17:13
Sinon je t'envoie ton classeur!
Mais je pense que tu vas y arriver, ce n'est pas sorcier de faire Alt F11 sur ton interface pour accéder au module de ta feuille et y mettre ce code!
Mais je pense que tu vas y arriver, ce n'est pas sorcier de faire Alt F11 sur ton interface pour accéder au module de ta feuille et y mettre ce code!
ram43
Messages postés
25
Date d'inscription
mardi 15 janvier 2013
Statut
Membre
Dernière intervention
12 mars 2018
55
6 mars 2018 à 17:25
6 mars 2018 à 17:25
Oui merci j'ai bien copié ton code dans la partie Worksheet et ça fonctionne bien comme tu dis. Cela copie le nom du conducteur. Après j'essaie de comprendre le code aussi et voir si ça me convient comme solution :)
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
6 mars 2018 à 17:23
6 mars 2018 à 17:23
ram43
Messages postés
25
Date d'inscription
mardi 15 janvier 2013
Statut
Membre
Dernière intervention
12 mars 2018
55
7 mars 2018 à 10:13
7 mars 2018 à 10:13
La Marco fonctionne plus ou moins bien. Sur certains cellules ça copie quand-même le numéro.
Je continue à essayer d'avoir une fonctionnalité similaire qui serait dans la macro que j'ai et qui copie tout d'un coup après une action sur le bouton. Pour la partie copier c'est bon, il me manque encore un moyen pour sélectionner qu'une partie de certaines cellules (que le nom du conducteur / pour le changement prendre tout avant ou après le premier espace).
Je continue à essayer d'avoir une fonctionnalité similaire qui serait dans la macro que j'ai et qui copie tout d'un coup après une action sur le bouton. Pour la partie copier c'est bon, il me manque encore un moyen pour sélectionner qu'une partie de certaines cellules (que le nom du conducteur / pour le changement prendre tout avant ou après le premier espace).
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
7 mars 2018 à 12:18
7 mars 2018 à 12:18
Sur certains cellules ça copie quand-même le numéro.
C'est normal si tu lis cela:
'Extraire les données séparées par un espace dans une chaine de caractères
Dans mon exemple j'ai mis 3 espaces pour aller avec les premières ligne. Mais par la suite tu as des numéros qui sont collés au nom!
Cela ne peut fonctionner
en vba il faut être rigoureux et faire les saisies dans le cellules correctement.
Le code que je t'ai donné est le plus efficace pour ce que tu veux faire.
Il va falloir que tu corriges tes cellules en mettant le même nombre d'espaces dans chacunes d'elles.
J'ai mis cela aussi, cela s’arrête en A8, il faut le corriger en mettant la dernière cellule saisie dans la colonne
Voilà
C'est normal si tu lis cela:
'Extraire les données séparées par un espace dans une chaine de caractères
Dans mon exemple j'ai mis 3 espaces pour aller avec les premières ligne. Mais par la suite tu as des numéros qui sont collés au nom!
Cela ne peut fonctionner
en vba il faut être rigoureux et faire les saisies dans le cellules correctement.
Le code que je t'ai donné est le plus efficace pour ce que tu veux faire.
Il va falloir que tu corriges tes cellules en mettant le même nombre d'espaces dans chacunes d'elles.
J'ai mis cela aussi, cela s’arrête en A8, il faut le corriger en mettant la dernière cellule saisie dans la colonne
If Not Intersect(Target, Range("A3:A8"))
Voilà
ram43
Messages postés
25
Date d'inscription
mardi 15 janvier 2013
Statut
Membre
Dernière intervention
12 mars 2018
55
Modifié le 7 mars 2018 à 17:15
Modifié le 7 mars 2018 à 17:15
J'apprécie tes conseils.
Je ne suis pas l'auteur du document, j'essaie de réduire le temps de saisie que j'ai à faire dessus.
Quand ça sera possible je pourrais adapter le tableur et la saisie des cellules ce qui n'est pas le cas aujourd'hui.
J'ai une vingtaine de lignes alors j'ai rallongé jusqu'à "A25"
Je n'ai pas encore saisie comment fonctionne l'ensemble de ton code.
J'ai vu que le code permet avec un double-clic de copier et coller une cellule dans une autre.
Et que avec la fonction Split on arrive à garder qu'une partie des caractères.
Cependant j'ai surement pas saisie toute les fonctionnalités de ta macro et son efficacité. Car ce que j'ai cherché à faire avec la macro que j'ai édité moi même c'est d'avoir une copie de toutes les cellules dont j'ai besoin en un clic.
Merci pour ta patience et tes réponses.
Je ne suis pas l'auteur du document, j'essaie de réduire le temps de saisie que j'ai à faire dessus.
Quand ça sera possible je pourrais adapter le tableur et la saisie des cellules ce qui n'est pas le cas aujourd'hui.
J'ai une vingtaine de lignes alors j'ai rallongé jusqu'à "A25"
If Not Intersect(Target, Range("A3:A25")) Is Nothing Then
Je n'ai pas encore saisie comment fonctionne l'ensemble de ton code.
J'ai vu que le code permet avec un double-clic de copier et coller une cellule dans une autre.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Et que avec la fonction Split on arrive à garder qu'une partie des caractères.
Tableau = Split(nom, " ")
Cependant j'ai surement pas saisie toute les fonctionnalités de ta macro et son efficacité. Car ce que j'ai cherché à faire avec la macro que j'ai édité moi même c'est d'avoir une copie de toutes les cellules dont j'ai besoin en un clic.
Merci pour ta patience et tes réponses.
ram43
Messages postés
25
Date d'inscription
mardi 15 janvier 2013
Statut
Membre
Dernière intervention
12 mars 2018
55
7 mars 2018 à 17:08
7 mars 2018 à 17:08
Où j'en suis actuellement.
https://www.cjoint.com/c/HChqhO1yt5c
https://www.cjoint.com/c/HChqhO1yt5c
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
8 mars 2018 à 08:16
8 mars 2018 à 08:16
Je t'ai fait un exemple pour la macro Feuille2, tu verras la différence avec la tienne:
https://www.cjoint.com/c/HCihoSljkvQ
@+ Le Pivert
https://www.cjoint.com/c/HCihoSljkvQ
@+ Le Pivert
2 mars 2018 à 15:07
'Macro_3
'Copie des valeur d'une ligne de tournée dans les cellules pour la fiche conducteur
'Bouton pour activer macro
'Début de la procédure
Sub Macro_3()
'Test marco pas à pas F8
MsgBox ("Test macro pas à pas F8")
'Déclaration des variables
Dim Ligne As Integer
Dim Conducteur As String
Dim HeureEmbauche As Variant
Dim Tracteur As Variant
Dim Remorque As Variant
Dim Chargement As String
Dim Lieu As String
Dim Horaire As Variant
Dim DateJour As Date
'Affectation des variables
DateJour = Range("B1").Value
Ligne = InputBox("quelle ligne copier?")
'While x
'Affecataion des cellules
'Date
Range("B22").Value = DateJour
'Entete
Range("C23").Value
Range("E23").Value
Range("C24").Value
Range("E24").Value
'Chargement
Range("B26").Value
Range("C26").Value
Range("E26").Value
'Début de la boucle
'If
'Si ligne x alors cellules y
'Affecter valeur varaibles (copier valeur de la ligne x)
'Affectetation des
'Endif
'Variable :
'ligne à copier
'cellules à copier
'
'copier les que lettres cellule conducteur
'suprimer suffixe vide et espace cellule chargement
'
'Boite de dialogue numero ligne
'Copier cellule x si ligne y
'
'Messqge de sortir
MsgBox ("Programme terminé")
'fin de la procédure
End Sub
2 mars 2018 à 15:10
Les variables auront plusieurs valeurs à chaque ligne.
Et il faut changer de ligne dans la feuille du bas pour chaque chargement.
2 mars 2018 à 16:46
Sub COPIE()
'Déclaration des variables
Dim DateJour As Date
Dim Ligne As Integer
Dim Conducteur As String
Dim HeureEmbauche As Variant
Dim Tracteur As Variant
Dim Remorque As Variant
Dim Chargement As String
Dim Lieu As String
Dim Horaire As Variant
'Affectation des variables
DateJour = Range("B1").Value
Ligne = InputBox("quelle ligne copier?")
'copier les que lettres cellule conducteur
'suprimer suffixe vide et espace cellule chargement
'Copier cellule x si ligne y
'Début de la boucle
'Si Ligne = x
'Alors Varaibles du chargement sont y
'If
'Si ligne x alors cellules y
'Affecter valeur varaibles (copier valeur de la ligne x)
'Endif
'Affectation des variables en fonction de la variable ligne
Conducteur = Range("A3").Value
Tracteur = Range("B3").Value
Remorque = Range("C3").Value
HeureEmbauche = Range("D3").Value
'Affectation des variables en fonction du chargement
Chargement = Range("I3").Value
Lieu = Range("I3").Value
Horaire = Range("H3").Value
'While x = non vide
'nouvelle boucle pour nouvelle ligne de chargement
'Affecataion des cellules
'Date
Range("B22").Value = DateJour
'Entete feuille
Range("C23").Value = Conducteur
Range("E23").Value = HeureEmbauche
Range("C24").Value = Tracteur
Range("E24").Value = Remorque
'Faire une boucle pour les chargement avec saut d'une ligne pour un nouveau chargement
'Chargement 1
Range("B26").Value = Chargement
Range("C26").Value = Lieu
Range("E26").Value = Horaire
'Chargement 2
Range("B28").Value = Chargement
Range("C28").Value = Lieu
Range("E28").Value = Horaire
'Chargement 3
Range("B30").Value = Chargement
Range("C30").Value = Lieu
Range("E30").Value = Horaire
'Message de sortie
MsgBox ("Données copiées")
'fin de la procédure
End Sub
2 mars 2018 à 17:04
6 mars 2018 à 14:27
Sub FEUILLE1()
'Sauvegarder du fichier avant modification par la maccro
'ActiveWorkbook.Save
'Déclaration des variables
Dim DateJour As Date
Dim Ligne As Integer
Dim i As Integer
Dim Conducteur As String
Dim HeureEmbauche As Variant
Dim Tracteur As Variant
Dim Remorque As Variant
Dim Chargement As String
Dim Lieu As String
Dim Horaire As Variant
i = 3
'Affectation des variables
DateJour = Range("B1").Value
i = InputBox("quelle ligne copier?")
ActiveWindow.Panes(1).Activate
Columns("A:W").Rows(i).Select
'copier les que lettres cellule conducteur
'suprimer suffixe vide et espace cellule chargement
'Début de la boucle
'Demande de confirmation pour vider la feuille
If MsgBox("Copier la ligne?", vbYesNo, "Demande de confirmation") = vbYes Then
'Affectation des variables en fonction de la variable ligne
Conducteur = Range("A" & i).Value
Tracteur = Range("B" & i).Value
Remorque = Range("C" & i).Value
HeureEmbauche = Range("D" & i).Value
'Affectation des variables en fonction du chargement
Chargement = Range("I" & i).Value
Lieu = Range("I" & i).Value
Horaire = Range("H" & i).Value
'Affecataion des cellules
'Date
Range("B22").Value = DateJour
'Entete feuille
Range("C23").Value = Conducteur
Range("E23").Value = HeureEmbauche
Range("C24").Value = Tracteur
Range("E24").Value = Remorque
'Faire une boucle pour les chargement avec saut d'une ligne pour un nouveau chargement
'Chargement 1
Range("B26").Value = Chargement
Range("C26").Value = Lieu
Range("E26").Value = Horaire
'Chargement 2
Range("B28").Value = Chargement
Range("C28").Value = Lieu
Range("E28").Value = Horaire
'Chargement 3
Range("B30").Value = Chargement
Range("C30").Value = Lieu
Range("E30").Value = Horaire
End If
'Message de sortie
MsgBox ("Données copiées")
'fin de la procédure
End Sub