Macro vba-pblm d'écrasement de données !
Fermé
ML2000
Messages postés
9
Date d'inscription
jeudi 6 mai 2010
Statut
Membre
Dernière intervention
8 juin 2010
-
Modifié par ML2000 le 7/05/2010 à 14:25
eriiic Messages postés 24601 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 25 novembre 2024 - 7 mai 2010 à 18:44
eriiic Messages postés 24601 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 25 novembre 2024 - 7 mai 2010 à 18:44
A voir également:
- Macro vba-pblm d'écrasement de données !
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro word - Guide
- Reinstaller windows sans perte de données - Guide
- Effacer les données de navigation - Guide
- La zone de données passée à un appel système est insuffisante - Windows 11
6 réponses
eriiic
Messages postés
24601
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 novembre 2024
7 243
7 mai 2010 à 14:44
7 mai 2010 à 14:44
Bonjour,
En fait tu veux concatener (mettre bout à bout) des chaines.
Il faut en plus les séparer par un caractère.
Ex avec , comme séparateur :
MaFeuille.Cells(iLigne1, 3).Value = MaFeuille.Cells(iLigne1, 3).Value & "," & MaFeuille.Cells(iLigne2, 11).Value
Je n'ai pas regardé la logique de ton code complet...
eric
En fait tu veux concatener (mettre bout à bout) des chaines.
Il faut en plus les séparer par un caractère.
Ex avec , comme séparateur :
MaFeuille.Cells(iLigne1, 3).Value = MaFeuille.Cells(iLigne1, 3).Value & "," & MaFeuille.Cells(iLigne2, 11).Value
Je n'ai pas regardé la logique de ton code complet...
eric
ML2000
Messages postés
9
Date d'inscription
jeudi 6 mai 2010
Statut
Membre
Dernière intervention
8 juin 2010
7 mai 2010 à 14:56
7 mai 2010 à 14:56
Bonjour eriiic,
C'est pas tout à fait ça. J'essaie de mieux réexpliquer.
J'ai 2 colonnes. La première avec les identifiants:
eleve1
eleve1
eleve1
eleve2
eleve2
eleve3
Et une deuxième avec les données:
noteA
noteB
noteC
noteA
noteB
noteA
Et ce que je voudrais bien faire, c'est quand je recherche l'identifiant 'eleve1', dans ma colonne de résultats, ma macro devrait me sortir sur une colonne:
noteA
noteB
noteC
Alors qu'actuellement, elle m'inscrit dans la première cellule 'noteC' en écrasant 'noteA' et 'noteB'. Au lieu d'écrire sur les cellules du dessous!
J'espère que c'est plus compréhensible.
Merci
C'est pas tout à fait ça. J'essaie de mieux réexpliquer.
J'ai 2 colonnes. La première avec les identifiants:
eleve1
eleve1
eleve1
eleve2
eleve2
eleve3
Et une deuxième avec les données:
noteA
noteB
noteC
noteA
noteB
noteA
Et ce que je voudrais bien faire, c'est quand je recherche l'identifiant 'eleve1', dans ma colonne de résultats, ma macro devrait me sortir sur une colonne:
noteA
noteB
noteC
Alors qu'actuellement, elle m'inscrit dans la première cellule 'noteC' en écrasant 'noteA' et 'noteB'. Au lieu d'écrire sur les cellules du dessous!
J'espère que c'est plus compréhensible.
Merci
Utilisateur anonyme
7 mai 2010 à 15:42
7 mai 2010 à 15:42
Bonjour,
J'ai un peu de mal à suivre ton truc, mais je pense que tu as seulement une petite inversion au moment de l'écriture :
MaFeuille.Cells(iLigne1, 3).Value = MaFeuille.Cells(iLigne2, 11).Value
devrait en fait être :
MaFeuille.Cells(iLigne2, 3).Value = MaFeuille.Cells(iLigne1, 11).Value
car l'incrément de ta deuxième boucle se fait sur iLigne2 et non sur iLigne1.
...
Manu
J'ai un peu de mal à suivre ton truc, mais je pense que tu as seulement une petite inversion au moment de l'écriture :
MaFeuille.Cells(iLigne1, 3).Value = MaFeuille.Cells(iLigne2, 11).Value
devrait en fait être :
MaFeuille.Cells(iLigne2, 3).Value = MaFeuille.Cells(iLigne1, 11).Value
car l'incrément de ta deuxième boucle se fait sur iLigne2 et non sur iLigne1.
...
Manu
eriiic
Messages postés
24601
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 novembre 2024
7 243
7 mai 2010 à 15:47
7 mai 2010 à 15:47
alors tu peux utiliser .offset(lig,col) qui te décale ta référence de lig lignes et col colonnes
Dans ton cas, en se servant de ton compteur de boucle 2 (?), ça donnerait qcq chose comme :
MaFeuille.Cells(iLigne1, 3).offset(iLigne2-2,0).Value = ...
Dans ton cas, en se servant de ton compteur de boucle 2 (?), ça donnerait qcq chose comme :
MaFeuille.Cells(iLigne1, 3).offset(iLigne2-2,0).Value = ...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ML2000
Messages postés
9
Date d'inscription
jeudi 6 mai 2010
Statut
Membre
Dernière intervention
8 juin 2010
7 mai 2010 à 16:02
7 mai 2010 à 16:02
MERCI! et encore MERCI!!!
Vos deux réponses ont résolu mon problème.
Vos deux réponses ont résolu mon problème.
ML2000
Messages postés
9
Date d'inscription
jeudi 6 mai 2010
Statut
Membre
Dernière intervention
8 juin 2010
7 mai 2010 à 16:58
7 mai 2010 à 16:58
Re-bonjour,
Encore une petite chose, svp...
Le problème a été résolu mais j'ai juste un problème d'affichage.
Toutes les valeurs cherchées sont bien affichées les unes à la suite des autres mais j'ai plus de 5000 lignes.
Et quand on fait une recherche sur un identifiant, l'affichage des résultats se fait au niveau des lignes de la colonne 'données'. Par exemple, si un identifiant se trouve vers la 1000ème ligne dans la colonne 'données', les résultats s'afficheront dans la colonne 'résultats' mais vers la 1000ème ligne aussi.
N'y a t il pas un moyen pour les remonter en haut du tableau???
Ce serait plus pratique pour la lecture.
Revoici le code qui fonctionne très bien (mais avec le petit soucis d'affichage):
D'avance merci si vous avez une prtite solution à me proposer.
Encore une petite chose, svp...
Le problème a été résolu mais j'ai juste un problème d'affichage.
Toutes les valeurs cherchées sont bien affichées les unes à la suite des autres mais j'ai plus de 5000 lignes.
Et quand on fait une recherche sur un identifiant, l'affichage des résultats se fait au niveau des lignes de la colonne 'données'. Par exemple, si un identifiant se trouve vers la 1000ème ligne dans la colonne 'données', les résultats s'afficheront dans la colonne 'résultats' mais vers la 1000ème ligne aussi.
N'y a t il pas un moyen pour les remonter en haut du tableau???
Ce serait plus pratique pour la lecture.
Revoici le code qui fonctionne très bien (mais avec le petit soucis d'affichage):
If sDepart1 = MaFeuille.Cells(iLigne2, 10).Value Then MaFeuille.Cells(iLigne1, 3).Offset(iLigne2 - 2, 0).Value = MaFeuille.Cells(iLigne2, 11).Value End If
D'avance merci si vous avez une prtite solution à me proposer.
eriiic
Messages postés
24601
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 novembre 2024
7 243
7 mai 2010 à 18:44
7 mai 2010 à 18:44
Si tu veux connaitre la ligne de la 1ère cellule libre de la colonne C par exemple alors :
lig=[C65536].end(xlup).row+1
Je ne sais pas où tu veux en venir mais connais-tu le filtre automatique (menu données) ?
Tu peux filtrer sur une colonne pour n'avoir que les valeurs que tu veux voir...
lig=[C65536].end(xlup).row+1
Je ne sais pas où tu veux en venir mais connais-tu le filtre automatique (menu données) ?
Tu peux filtrer sur une colonne pour n'avoir que les valeurs que tu veux voir...