Macro compliquée
Résolu/Fermé
Farfadet88
Messages postés
6293
Date d'inscription
lundi 28 janvier 2008
Statut
Membre
Dernière intervention
29 avril 2020
-
6 janv. 2010 à 11:47
Farfadet88 Messages postés 6293 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 29 avril 2020 - 7 janv. 2010 à 14:28
Farfadet88 Messages postés 6293 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 29 avril 2020 - 7 janv. 2010 à 14:28
A voir également:
- Macro compliquée
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro word - Guide
- Jitbit macro recorder - Télécharger - Confidentialité
- Macro logiciel - Télécharger - Organisation
- Comment draguer une fille compliquée à l'école ✓ - Forum Loisirs / Divertissements
21 réponses
Gord21
Messages postés
918
Date d'inscription
samedi 21 novembre 2009
Statut
Membre
Dernière intervention
20 mars 2013
289
6 janv. 2010 à 13:25
6 janv. 2010 à 13:25
Bonjour,
Une petite question : comment sont ajoutées tes données sur Feuille 1 ? (macro, manuellement, )
Pour comment faire, je pense que tu recherches la dernière ligne inscrite sous Feuille 1 dans Feuille finale, tu insères une ligne et tu copies tes données.
Une petite question : comment sont ajoutées tes données sur Feuille 1 ? (macro, manuellement, )
Pour comment faire, je pense que tu recherches la dernière ligne inscrite sous Feuille 1 dans Feuille finale, tu insères une ligne et tu copies tes données.
Farfadet88
Messages postés
6293
Date d'inscription
lundi 28 janvier 2008
Statut
Membre
Dernière intervention
29 avril 2020
1 369
6 janv. 2010 à 13:30
6 janv. 2010 à 13:30
Elles y sont insérées par macro.
exemple:
Range("a65536").End(xlUp).Offset(1, 0) = textbox1.value
Quelle est la macro permettant de rechercher la ligne en dessous de ma ligne "Feuille 1" et d'y insérer une nouvelle ligne? Sachant que ma ligne "feuille 1" est composée de plusieurs cellules fusionnées
exemple:
Range("a65536").End(xlUp).Offset(1, 0) = textbox1.value
Quelle est la macro permettant de rechercher la ligne en dessous de ma ligne "Feuille 1" et d'y insérer une nouvelle ligne? Sachant que ma ligne "feuille 1" est composée de plusieurs cellules fusionnées
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
6 janv. 2010 à 13:50
6 janv. 2010 à 13:50
Salut,
Tu peux trouver cette ligne grâce à la fonction find (tu recherches Feuille1 par exemple) un exemple ici pas très récent...
Tu peux trouver cette ligne grâce à la fonction find (tu recherches Feuille1 par exemple) un exemple ici pas très récent...
Farfadet88
Messages postés
6293
Date d'inscription
lundi 28 janvier 2008
Statut
Membre
Dernière intervention
29 avril 2020
1 369
7 janv. 2010 à 10:03
7 janv. 2010 à 10:03
Re,
Bon ben je n'arrive pas à adapter son code pour réaliser le mien (et oui je suis une vraie bille).
Un peu d'aide ne serait pas de refus si tu as le temps.
Merci d'avance
Bon ben je n'arrive pas à adapter son code pour réaliser le mien (et oui je suis une vraie bille).
Un peu d'aide ne serait pas de refus si tu as le temps.
Merci d'avance
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
7 janv. 2010 à 10:19
7 janv. 2010 à 10:19
Salut Farfadet,
Petite question :
ta feuille "finale" est construite sur ce modèle :
feuille 1
des données
des données
<une ligne vide>
feuille 2
des données
des données
des données
<une ligne vide>
feuille 3
etc...
Avec systématiquement une ligne vide entre les données de la feuille précédente et le nom "feuille x"?
Petite question :
ta feuille "finale" est construite sur ce modèle :
feuille 1
des données
des données
<une ligne vide>
feuille 2
des données
des données
des données
<une ligne vide>
feuille 3
etc...
Avec systématiquement une ligne vide entre les données de la feuille précédente et le nom "feuille x"?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Farfadet88
Messages postés
6293
Date d'inscription
lundi 28 janvier 2008
Statut
Membre
Dernière intervention
29 avril 2020
1 369
7 janv. 2010 à 10:27
7 janv. 2010 à 10:27
Non.
Au tout début de l'utilisation j'ai:
Feuille1
Feuille2
Feuille3.
...
Et par la suite je veux obtenir
Feuille1
Données
Données
Données
Données
Feuille2
Données
Données
Feuille3
Données
Sachant que les cases "feuille" sont composées de plusieurs cases fusionnées. Ce sont en quelques sortes des cases "titre"
Au tout début de l'utilisation j'ai:
Feuille1
Feuille2
Feuille3.
...
Et par la suite je veux obtenir
Feuille1
Données
Données
Données
Données
Feuille2
Données
Données
Feuille3
Données
Sachant que les cases "feuille" sont composées de plusieurs cases fusionnées. Ce sont en quelques sortes des cases "titre"
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
7 janv. 2010 à 10:49
7 janv. 2010 à 10:49
Voilà déjà la bonne syntaxe pour la méthode find :
numlig te renvoie donc le numéro de ligne ou l'on trouve ton nom de feuille (feuille 1) sur la feuille finale
Reste à copier / coller ta ligne.
Pour le "copier" pas de souci, je suppose que tu copies la dernière ligne saisie et donc la dernière ligne non vide :
Par contre le "coller" pose problème. Le plus simple est de coller chaque nouvelle ligne juste sous la ligne de titre dans la feuille finale. Ton code complet donnerait ceci :
Dim donnee As String, numlig As String donnee = ActiveSheet.Name numlig = Sheets("Feuille finale").Cells.Find(What:=donnee, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlNext).Row
numlig te renvoie donc le numéro de ligne ou l'on trouve ton nom de feuille (feuille 1) sur la feuille finale
Reste à copier / coller ta ligne.
Pour le "copier" pas de souci, je suppose que tu copies la dernière ligne saisie et donc la dernière ligne non vide :
Sheets("Feuille 1").Range("A65536").End(xlUp).EntireRow.Copy
Par contre le "coller" pose problème. Le plus simple est de coller chaque nouvelle ligne juste sous la ligne de titre dans la feuille finale. Ton code complet donnerait ceci :
Dim donnee As String, numlig As String 'ton code ici donnee = ActiveSheet.Name numlig = Sheets("Feuille finale").Cells.Find(What:=donnee, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlNext).Row Sheets("Feuille finale").Range("A" & numlig).Offset(1, 0).EntireRow.Insert Shift:=xlDown ActiveSheet.Range("A65536").End(xlUp).EntireRow.Copy Sheets("Feuille finale").Range("A" & numlig).Offset(1, 0)
Farfadet88
Messages postés
6293
Date d'inscription
lundi 28 janvier 2008
Statut
Membre
Dernière intervention
29 avril 2020
1 369
7 janv. 2010 à 11:20
7 janv. 2010 à 11:20
Erf ça a marché un moment dans un classeur de test mais ça ne marche pas dans mon vrai classeur
La macro m'insère une ligne sous celle recherchée et me colle le nom de cette ligne et non les valeurs de la ligne située en fin de tableau
La macro m'insère une ligne sous celle recherchée et me colle le nom de cette ligne et non les valeurs de la ligne située en fin de tableau
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
7 janv. 2010 à 11:45
7 janv. 2010 à 11:45
Donne nous ton code, se sera plus simple de le corriger...
Quand tu EDIT un message signale le car on ne le vois pas dans "mes interventions"...
Quand tu EDIT un message signale le car on ne le vois pas dans "mes interventions"...
Farfadet88
Messages postés
6293
Date d'inscription
lundi 28 janvier 2008
Statut
Membre
Dernière intervention
29 avril 2020
1 369
7 janv. 2010 à 11:51
7 janv. 2010 à 11:51
If Sheets("données").Range("m1") = "Administratif" Then
Sheets("Administratif").Select
Range("a65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("n1")
Range("b65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("o1")
Sheets("données").Range("l1").Copy
Range("c65536").End(xlUp).Offset(1, 0).Select
ActiveCell.PasteSpecial
If ActiveCell.Value = "Photo" Then ActiveCell.Comment.Visible = False
Range("d65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("p1").Value
Range("e65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("q1").Value
Range("f65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("r1").Value
Range("g65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("w1").Value
Range("i65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("t1").Value
Range("j65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("w1").Value
Range("m65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("u1").Value
Range("h65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("s1").Value
Range("k65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("x1").Value
Range("l65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("y1").Value
Sheets("suivi").Select
Range("a65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("m1")
Range("b65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("n1")
Range("c65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("o1")
Range("d65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("x1")
Range("e65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("u1")
Dim donnee As String, numlig As String
donnee = ActiveSheet.Name
numlig = Sheets("suivi").Cells.Find(What:="administratif", LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlNext).Row
Sheets("suivi").Range("A" & numlig).Offset(1, 0).EntireRow.Insert Shift:=xlDown
Sheets("suivi").Range("A65536").End(xlUp).EntireRow.Cut Sheets("suivi").Range("A" & numlig).Offset(1, 0)
End If
Sheets("Administratif").Select
Range("a65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("n1")
Range("b65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("o1")
Sheets("données").Range("l1").Copy
Range("c65536").End(xlUp).Offset(1, 0).Select
ActiveCell.PasteSpecial
If ActiveCell.Value = "Photo" Then ActiveCell.Comment.Visible = False
Range("d65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("p1").Value
Range("e65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("q1").Value
Range("f65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("r1").Value
Range("g65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("w1").Value
Range("i65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("t1").Value
Range("j65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("w1").Value
Range("m65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("u1").Value
Range("h65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("s1").Value
Range("k65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("x1").Value
Range("l65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("y1").Value
Sheets("suivi").Select
Range("a65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("m1")
Range("b65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("n1")
Range("c65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("o1")
Range("d65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("x1")
Range("e65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("u1")
Dim donnee As String, numlig As String
donnee = ActiveSheet.Name
numlig = Sheets("suivi").Cells.Find(What:="administratif", LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlNext).Row
Sheets("suivi").Range("A" & numlig).Offset(1, 0).EntireRow.Insert Shift:=xlDown
Sheets("suivi").Range("A65536").End(xlUp).EntireRow.Cut Sheets("suivi").Range("A" & numlig).Offset(1, 0)
End If
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
7 janv. 2010 à 12:14
7 janv. 2010 à 12:14
Tu écris :
ce code coupe la dernière ligne saisie en feuille suivi pour la coller en feuille suivi sue la ligne sous le titre. C'est donc bien cela...
Je ne vois pas d'erreur.
Par contre,
Sheets("suivi").Range("A65536").End(xlUp).EntireRow.Cut Sheets("suivi").Range("A" & numlig).Offset(1, 0)
ce code coupe la dernière ligne saisie en feuille suivi pour la coller en feuille suivi sue la ligne sous le titre. C'est donc bien cela...
Je ne vois pas d'erreur.
Par contre,
Dim donnee As String donnee = ActiveSheet.Namene servent à rien
Farfadet88
Messages postés
6293
Date d'inscription
lundi 28 janvier 2008
Statut
Membre
Dernière intervention
29 avril 2020
1 369
7 janv. 2010 à 12:30
7 janv. 2010 à 12:30
Là est bien le souci
Le code est bon mais la macro exécutée ne correspond pas à ce qui se passe...
Les mystères d'excel
Le code est bon mais la macro exécutée ne correspond pas à ce qui se passe...
Les mystères d'excel
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
7 janv. 2010 à 12:34
7 janv. 2010 à 12:34
essaie de rajouter ".value" à ces lignes :
Sheets("suivi").Select
Range("a65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("m1").value
Range("b65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("n1").value
etc etc
Sheets("suivi").Select
Range("a65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("m1").value
Range("b65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("n1").value
etc etc
Farfadet88
Messages postés
6293
Date d'inscription
lundi 28 janvier 2008
Statut
Membre
Dernière intervention
29 avril 2020
1 369
7 janv. 2010 à 12:41
7 janv. 2010 à 12:41
Toujours le même problème
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
7 janv. 2010 à 13:12
7 janv. 2010 à 13:12
Déjà change :
et change :
par
Dim numlig as stringpar :
Dim numlig As Integer
et change :
Sheets("suivi").Range("A65536").End(xlUp).EntireRow.Cut Sheets("suivi").Range("A" & numlig).Offset(1, 0)
par
Sheets("suivi").Range("A65536").End(xlUp).EntireRow.Cut Range("A" & numlig).Offset(1, 0)
Farfadet88
Messages postés
6293
Date d'inscription
lundi 28 janvier 2008
Statut
Membre
Dernière intervention
29 avril 2020
1 369
7 janv. 2010 à 13:16
7 janv. 2010 à 13:16
C'est fait
toujours le même résultat
toujours le même résultat
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
7 janv. 2010 à 13:17
7 janv. 2010 à 13:17
Dans mon profil tu trouveras mon mail perso. Peut être pourrais tu m'envoyer ton fichier?
Farfadet88
Messages postés
6293
Date d'inscription
lundi 28 janvier 2008
Statut
Membre
Dernière intervention
29 avril 2020
1 369
7 janv. 2010 à 13:33
7 janv. 2010 à 13:33
Le mail vient de partir :)
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
7 janv. 2010 à 13:37
7 janv. 2010 à 13:37
en réception. 18Mo le fichier Excel!!!!!!!!
Farfadet88
Messages postés
6293
Date d'inscription
lundi 28 janvier 2008
Statut
Membre
Dernière intervention
29 avril 2020
1 369
7 janv. 2010 à 13:38
7 janv. 2010 à 13:38
Ouais je pense que ce sont mes macros de débutant qui foutent le bordel :P
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
7 janv. 2010 à 14:16
7 janv. 2010 à 14:16
Non ce ne sont pas tes macros "de débutant" qui alourdissent ton classeur. Ce sont les photos!
Un logo de 647Ko par feuille sur 8 feuille = 5Mo.
Ensuite toutes ces images insérées dans des commentaires...
Oui c'est beau, mais ça va forcément coincer à un moment ou à un autre.
Réduit au maximum les tailles de ces images quitte à perdre de leur qualité.
Au passage, bonjour Mr Le Pingou et bonne année...
Un logo de 647Ko par feuille sur 8 feuille = 5Mo.
Ensuite toutes ces images insérées dans des commentaires...
Oui c'est beau, mais ça va forcément coincer à un moment ou à un autre.
Réduit au maximum les tailles de ces images quitte à perdre de leur qualité.
Au passage, bonjour Mr Le Pingou et bonne année...
Farfadet88
Messages postés
6293
Date d'inscription
lundi 28 janvier 2008
Statut
Membre
Dernière intervention
29 avril 2020
1 369
>
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
7 janv. 2010 à 14:28
7 janv. 2010 à 14:28
Dako dak!
Encore merci
Encore merci
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 454
7 janv. 2010 à 13:54
7 janv. 2010 à 13:54
Bonjour Farfadet88,
Pouvez-vous mettre une copie du vrai classeur avec 2 à 3 feuilles contenant une dizaine de lignes et bien sur la UserForm la feuille [feuille finale] et les procédures (se sera moins lourd en taille !) sur http://cijoint.fr/
Pouvez-vous mettre une copie du vrai classeur avec 2 à 3 feuilles contenant une dizaine de lignes et bien sur la UserForm la feuille [feuille finale] et les procédures (se sera moins lourd en taille !) sur http://cijoint.fr/
Farfadet88
Messages postés
6293
Date d'inscription
lundi 28 janvier 2008
Statut
Membre
Dernière intervention
29 avril 2020
1 369
7 janv. 2010 à 13:55
7 janv. 2010 à 13:55
Des pare-feux admin m'empêchent de déposer ou récupérer des fichier sur Ci-joint... Hélas
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
7 janv. 2010 à 13:59
7 janv. 2010 à 13:59
J'ai compris.
Dans ton code tu nous écris :
Or dans ta feuille suivi, la dernière ligne non vide avant cette macro est une cellule fusionnée. Donc les lignes représentées par "Range("a65536").End(xlUp).Offset(1, 0)" "Range("b65536").End(xlUp).Offset(1, 0)" etc ne sont pas les mêmes...
Solution :
ps : j'ai supprimé ton fichier de mon ordi...
Dans ton code tu nous écris :
Sheets("suivi").Select Range("a65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("m1") Range("b65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("n1") Range("c65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("o1") Range("d65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("x1") Range("e65536").End(xlUp).Offset(1, 0) = Sheets("données").Range("u1")
Or dans ta feuille suivi, la dernière ligne non vide avant cette macro est une cellule fusionnée. Donc les lignes représentées par "Range("a65536").End(xlUp).Offset(1, 0)" "Range("b65536").End(xlUp).Offset(1, 0)" etc ne sont pas les mêmes...
Solution :
Sheets("suivi").Select Dim i as Integer i = Range("a65536").End(xlUp).Offset(1, 0).Row Range("A" & i) = Sheets("données").Range("m1") Range("B" & i) = Sheets("données").Range("n1") Range("C" & i) = Sheets("données").Range("o1") Range("D" & i) = Sheets("données").Range("x1") Range("E" & i) = Sheets("données").Range("u1")
ps : j'ai supprimé ton fichier de mon ordi...